OnCheckedChanged正在处理每个回发事件.如何防止这种情况发生

本文关键字:何防止 情况 事件 OnCheckedChanged 处理 | 更新日期: 2023-09-27 18:23:58

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.*/
}

同样的问题也被问到了,但我没有得到。请帮忙。

OnCheckedChanged正在处理每个回发事件.如何防止这种情况发生

根据单选按钮检查更改的事件触发两次您可以验证是哪个控件导致CheckedChanged事件激发,如下所示

protected void chkShowOnOrder_CheckedChanged(object sender, EventArgs e)
{ 
    CheckBox cb= sender as CheckBox ;
    if (cb != null && cb.ID=="chkShowOnOrder")
    {
       //Your code here
    }
}

您可以检查的值

Request.Form["__EVENTTARGET"]

要知道是哪个控件触发了事件。因此,可以对使用该值进行检查。