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

时间:2011-03-24 18:26:49

标签: c# .net asp.net events event-handling

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

page
  user control 1
     user control 2
         control 3

我希望能够做的是,当控件3(它可以是任何类型的控件,我想一般地执行此操作)让用户做一些触发回发的事情,它会将某些事件冒泡到用户控件2,或者甚至可能是用户控件1(虽然我也可以让UC 2手动冒泡事件)。

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

感谢。

1 个答案:

答案 0 :(得分:11)

事件冒泡内置于asp.net

检查出来:http://www.4guysfromrolla.com/articles/051105-1.aspx

基本上,要举起你想要冒泡的事件:

RaiseBubbleEvent(this, args);

然后抓住它:

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;
}

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

  

RaiseBubbleEvent的实现   由Control提供,不能   覆盖。 RaiseBubbleEvent发送   事件数据上升到层次结构   控制的父母。处理或处理   提高泡沫事件,控制   必须覆盖OnBubbleEvent   方法

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