在ASP.NET中向父级冒泡事件

Bri*_*ins 8 .net c# asp.net events event-handling

我在ASP.NET中说过这个层次结构:

page
  user control 1
     user control 2
         control 3
Run Code Online (Sandbox Code Playgroud)

我想要做的是,当控件3(它可以是任何类型的控件,我想要通常这样做)让用户做一些触发回发的事情,它会将某些事件冒泡到用户控件2 ,或者甚至可能是用户控制1(虽然我也可以让UC 2手动鼓泡事件).

同样,我想一般地这样做,以便层次结构可以改变,它仍然有效.也许有多个控件(控件4等)或数据绑定控件.这可能吗?

谢谢.

Ada*_*kis 11

事件冒泡是内置于asp.net

看看这个:http: //www.4guysfromrolla.com/articles/051105-1.aspx

基本上,要提升您想要冒泡的事件:

RaiseBubbleEvent(this, args);
Run Code Online (Sandbox Code Playgroud)

然后抓住它:

protected override bool OnBubbleEvent(object source, EventArgs e) {
    bool handled = false;

    if (e is TemplatedListCommandEventArgs) {
        TemplatedListCommandEventArgs ce = (TemplatedListCommandEventArgs)e;

        OnItemCommand(ce);
        handled = true;
    }
    return handled;
}
Run Code Online (Sandbox Code Playgroud)

正如代码所暗示的,如果此方法返回false,则事件将继续冒泡控制层次结构

RaiseBubbleEvent的实现由Control提供,不能被覆盖.RaiseBubbleEvent将层次结构中的事件数据发送到控件的父级.要处理或引发冒泡事件,控件必须覆盖OnBubbleEvent方法.

来自MSDN:http://msdn.microsoft.com/en-us/library/aa719644( v = vs.71).aspx