【发布时间】:2014-11-17 12:15:56
【问题描述】:
OnCheckedChanged 事件在不同控件的每次回发时触发。如何预防?
我想 onCheckedChanged 应该只适用于复选框。如何防止其他控件在回发时触发此事件?
aspx:
<asp:TemplateField HeaderText="Show on Order"
HeaderStyle-HorizontalAlign="left" ItemStyle-HorizontalAlign="center"
ItemStyle-Width="15%">
<ItemTemplate>
<asp:CheckBox ID="chkShowOnOrder" runat="server" AutoPostBack="true"
Checked='<%# Bind("Show_Order") %>'
OnCheckedChanged="chkShowOnOrder_CheckedChanged"
ToolTip='<%# Bind("Document_ID") %>'>
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
C#
protected void chkShowOnOrder_CheckedChanged(object sender, EventArgs e)
{
CheckBox checkbox = (CheckBox)sender;
int docID = Convert.ToInt32(checkbox.ToolTip);
TableRow tr = (TableRow)checkbox.Parent.Parent;
/*Some other code below.*/
}
post 中提出了同样的问题,但我没有得到它。 请帮忙。
【问题讨论】:
-
如果复选框已更改,该事件将在每次回发时触发,您无法阻止。如果您想更改复选框以导致回发,请在复选框上设置
AutoPostBack="true"。 -
事件按预期触发复选框,但它也触发不同控件的每个回发。比如点击Linkbutton也会调用Checkbox的onCheckedChanged事件。
-
单击链接按钮不会触发复选框的 CheckChanged(除非您还将它连接到链接按钮单击事件或类似事件),但是如果自上次回发以来复选框已更改,则事件将在下一次回发中触发,无论哪个控件导致回发。
-
@BenRobinson 先生,您应该查看这篇文章:social.msdn.microsoft.com/Forums/vstudio/en-US/…
-
复选框 box2 = (CheckBox)GridView1.Rows[rowIndex].FindControl("chkShowOnOrder ");使用查找控件