我正在使用带有ItemTemplate的RadListView控件,该控件包含一个按钮,如下所示:
<ItemTemplate>
<tr class="rlvI">
//more TD elements here
<td>
<telerik:RadButton ID="ENABLEDToggle" runat="server" Width="75" ButtonType="StandardButton" AutoPostBack="true"
ToggleType="CustomToggle" Checked='<%# Enabled_Converter(Eval("ENABLED")) %>' OnCheckedChanged="TaskStateChange_Clicked">
<ToggleStates>
<telerik:RadButtonToggleState Text="Enabled" />
<telerik:RadButtonToggleState Text="Disabled" />
</ToggleStates>
</telerik:RadButton>
</td>
</tr>
</ItemTemplate>
我的第一个问题是为什么当按下我的按钮时,我没有输入我的TaskStateChange_Clicked事件处理程序?就好像事件永远不会被解雇一样。
其次,每当单击一个按钮时,如何获取与该行关联的对象?
答案 0 :(得分:2)
关于第一个问题,请检查您对RadListView
的约束方式。如果控件与每个回发上的数据绑定,通常会出现这样的问题。所以如果你有像
void Page_Load(object sender, EventArgs e)
{
...
RadListView1.DataSource = dataSource;
RadListView1.DataBind();
...
}
替换为
void Page_Load(object sender, EventArgs e)
{
...
if (!this.IsPostBack)
{
RadListView1.DataSource = dataSource;
RadListView1.DataBind();
}
...
}
从评论中更新。另一个原因可能是您的按钮类型为StandardButton
,而spec表示仅在按钮类型时触发事件CheckedChanged
是ToggleButton
。
至于第二个问题,请考虑使用RadListView的ItemCommand
事件。通过这种方式,您可以使用CommandArgument
RadButton
属性,并传递您想要的任何信息,例如对象的ID。