Bur*_*jua 1 c# asp.net data-binding repeater
我有一个转发器并绑定一个对象列表,如下所示:
List<MyClass> myList = //....
MyRepeater.DataSource = myList;
MyRepeater.DataBind();
Run Code Online (Sandbox Code Playgroud)
在转发器内部,我有一个链接按钮,由此处理程序处理:
protected void Button_ItemCommand(object source, RepeaterCommandEventArgs e) {
if (e.CommandName == "Edit") {
// I need to get my listItem.Id here
}
}
Run Code Online (Sandbox Code Playgroud)
它应该很容易,但我找不到如何做到这一点.
谢谢.
如果你想要点击的实际链接按钮,那么它已经在object source参数中传递给了这个方法- 只需适当地投射它.
LinkButton lb = source as LinkButton;
Run Code Online (Sandbox Code Playgroud)
如果你想要你的转发器中的其他控件,你可以使用
Button randomButton = e.Item.FindControl("buttonId") as Button;
Run Code Online (Sandbox Code Playgroud)
编辑
如果你想要一个属于该行所绑定的对象的属性,这将是一件痛苦的事情,而且它会很难看.您需要在Session或ViewState中跨越回发来保留转发器绑定的DataSource.一旦这样做,您可以通过将其索引与单击的reeater行的索引相匹配来访问源中的相应对象,您可以通过以下方式获取该对象:
e.Item.ItemIndex
Run Code Online (Sandbox Code Playgroud)
请注意,最简单的方法是将此值存储在转发器中的某个位置.
| 归档时间: |
|
| 查看次数: |
4392 次 |
| 最近记录: |