asp.net: отправить событие объекта из UserControl его родителю - PullRequest
1 голос
/ 24 июня 2009

У меня есть класс Пользователь с функциями Login () и Logout () и GetData () . Есть событие UserChanged , оно срабатывает при вызове любой из этих функций.

У меня есть UserControls на моем Default.aspx (они добавляются динамически).

У меня есть UserControl с именем Login.ascx. Он предоставляет функциональность для использования класса User: вы можете Войти / Выйти здесь. У меня есть **** EventHandler * для ** UserChanged ***** (если у меня его нет, он потерпит неудачу с исключением объекта не найден).

Мне нужно предупредить другие UserControls об изменениях в состоянии пользователя. Мне как-то нужно передать событие UserChanged из Login.ascx в его Parent, Default.aspx.

Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 24 июня 2009

Login.ascx.cs

public delegate void OnUserChangedHandler(object sender);
public OnUserChangedHandler OnUserChanged;

private void RaiseUserChangedEvent() //Call this method when the user changes
{
    //UserChanged Event
    if (OnUserChanged != null)
    {
        OnUserChanged(this);
    }
}

Default.aspx.cs

protected override void OnInit(EventArgs e)
{
    InitializeComponent();
    base.OnInit(e);
}

private void InitializeComponent()
{
    loginControl.OnUserChanged += OnUserChanged;
}

private void OnUserChanged(object sender)
{
    //Code here to do something with other controls on this page
}
2 голосов
/ 24 июня 2009

Существует еще одна возможность сообщить родительским элементам управления о некоторых действиях - RaiseBubbleEvent.

Вы можете прочитать об этом здесь: Использование RaiseBubbleEvent, чтобы сообщить родительскому элементу управления ASP.NET о повторной привязке

Дело в том, что дочерние элементы управления вызывают Метод RaiseBubbleEvent (...) И все его родители (независимо от того, как далеко они находятся в иерархии) могут переопределить метод OnBubbleEvent для обработки этого события. возвращаемое значение этих методов указывает, нужно ли передавать это событие следующему родителю или нет.

0 голосов
/ 24 июня 2009

Сначала элемент управления должен транслировать событие UserChanged, а затем необходимо подключить страницу для прослушивания события.

Есть много хороших ресурсов о том, как реализовать пользовательские события и обработчики событий ...

Попробуйте это с csharphelp.com

http://www.csharphelp.com/archives4/archive603.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...