Пузырьковые события для родителя в ASP.NET - PullRequest
8 голосов
/ 24 марта 2011

Я имею в виду эту иерархию в ASP.NET:

page
  user control 1
     user control 2
         control 3

То, что я хочу сделать, это то, что когда контроль 3 (это может быть любой вид контроля, я хочу сделать это в общем) заставляет пользователя делать с ним что-то, что запускает обратную передачу, он передает какое-то событие на пользовательский элемент управления 2 или, может быть, даже на элемент управления пользователя 1 (хотя я мог бы также настроить UC 2 для всплывающего события вручную).Я хочу сделать это в общем, чтобы иерархия могла измениться, и она все еще работает.Возможно, есть несколько элементов управления (элемент управления 4 и т. Д.) Или элемент управления с привязкой к данным.Возможно ли это?

Спасибо.

1 Ответ

11 голосов
/ 24 марта 2011

Событие Bubbling встроено в 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

...