Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bubbling Events to Parent in ASP.NET

I have say this hierarchy in ASP.NET:

page
  user control 1
     user control 2
         control 3

What I want to be able to do is that when control 3 (it could be any kind of control, I want to do this generically) has the user do something with it that triggers a postback, it bubbles up some event to user control 2, or maybe even user control 1 (though I could have UC 2 manually bubble the event too).

Again, I want to do this generically, so that the hierarchy can change and it still works. Maybe there are multiple controls (control 4, etc.) or a data bound control. Is this possible?

Thanks.

like image 842
Brian Mains Avatar asked Mar 24 '11 18:03

Brian Mains


1 Answers

Event Bubbling is built into asp.net

Check this out: http://www.4guysfromrolla.com/articles/051105-1.aspx

Basically, to raise the event that you want bubbled up:

RaiseBubbleEvent(this, args);

And then to catch it:

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

As the code implies, if this method returns false, the event will continue to bubble up the control hierarchy

The implementation of RaiseBubbleEvent is provided by Control and cannot be overridden. RaiseBubbleEvent sends the event data up the hierarchy to the control's parent. To handle or to raise the bubbled event, a control must override the OnBubbleEvent method.

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

like image 157
Adam Rackis Avatar answered Oct 14 '22 07:10

Adam Rackis