【问题标题】:OnCheckedChanged is working on every postback event. How to prevent that?OnCheckedChanged 正在处理每个回发事件。如何防止这种情况?
【发布时间】: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 ");使用查找控件

标签: c# asp.net


【解决方案1】:

根据Radio button checked changed event fires twice 您可以验证哪个控件导致 CheckedChanged 事件触发如下

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

【讨论】:

  • 我也尝试过这种方法,但这种解决方案有一个性能错误。意味着如果我的页面上有 25 个复选框,那么这段代码将运行 25 次。甚至回发电话也不是来自原始复选框。但它会调用这个块 25 次。我已经在调试模式下运行它来检查它的性能。
【解决方案2】:

你可以查看

的值
Request.Form["__EVENTTARGET"]

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2013-03-21
    相关资源
    最近更新 更多