gpt4 book ai didi

asp.net - 如何取消 ASP.net 中的事件冒泡?

转载 作者:行者123 更新时间:2023-12-04 06:29:14 25 4
gpt4 key购买 nike

是否可以阻止 ItemCommand 或控件事件在控件层次结构中冒泡?我有一个包含子用户控件的控件,这些控件可能已经或可能没有处理其 ItemCommand 事件的代码。我想要做的是允许子控件决定不将 ItemCommand 传递给父控件,以防它已经在其代码隐藏中处理了事件。

谢谢,

麦克风

最佳答案

在您的用户控件类中,覆盖 OnBubbleEvent()。如果您返回 true,您将停止“冒泡”到父控件。

protected override bool OnBubbleEvent(object source, EventArgs args)
{
//handled
return true;

//uncomment line below to bubble up (unhandled)
//return base.OnBubbleEvent(source, args);
}

我在修补这个时发现的另一件有点巧妙的事情,这在某些情况下可能很有用......你也可以更改控制heirachy中“冒泡”的命令名称。在您的子用户控件中,使用 OnCommand,而不是 Onclick。

因此,假设您的用户控件中有一个按钮,请更改以下代码:
<asp:button id="mySpecialButton" 
onClick="mySpecialButton_OnClick" runat="server">

对此:
<asp:Button id="mySpecialButton"
CommandName="mySpecialCommand"
CommandArgument="myArgument"
OnCommand="mySpecialButton_Command"
runat="server"/>

然后在代码隐藏中,
protected void mySpecialButton_Command(object sender, CommandEventArgs e)
{
RaiseBubbleEvent(this, new CommandEventArgs("Handled", e));
}

因此,在您的父控件的 ItemCommand 处理程序中,您将获得这个新的命令名称,而不是来自子控件的原始命令名称,您可以根据需要进行处理。

关于asp.net - 如何取消 ASP.net 中的事件冒泡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1822418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com