Как определить, когда нажимается кнопка у дочернего элемента на родительском - ASP.NET - PullRequest
0 голосов
/ 15 января 2009

В моем дочернем пользовательском элементе управления есть сетка с обработчиком событий OnRowCommand, который выполняется при нажатии кнопки «Редактировать». Я хочу установить для true видимость элемента-заполнителя ASP.NET в родительском элементе в значение true при нажатии кнопки «Изменить» в дочернем элементе управления.

Как лучше всего выполнить эту задачу?

Обновление:
После небольшого исследования интернет-ресурсов я создал в своем дочернем элементе управления событие Eventhandler и обработал событие, когда было запущено событие OnRowCommand. В моем событии page_load моего родительского элемента управления я сопоставил событие дочернего пользовательского элемента управления с личным событием в моем родительском элементе управления.

Исходный код дочернего элемента управления:

public event EventHandler MyEvent;

protected void MyGridView_OnRowCommand(object sender, GridViewCommandEventsArgs e)
{
    if(MyEvent != null)
        MyEvent(sender, e);
}

Исходный код родительского контроля:

protected void Page_Load(object sender, EventArgs e)
{
    MyChildControl.MyEvent += new EventHandler(this.MyLocalEvent);
}

private void MyLocalEvent(object sender, EventArgs e)
{
    MyPlaceHolder.Visible = true;
    MyUpdatePanel.Update();
}

Ответы [ 2 ]

1 голос
/ 16 января 2009

Существует два метода, помимо всплывания события, которые стоит рассмотреть:

а. Создайте новое событие в вашем дочернем элементе управления. Прослушайте это событие в родительском контроле. Запустите это событие в дочернем контроле.

б. Прослушайте событие gridview OnRowCommand в родительском элементе управления.

Подход a лучше, потому что меньше абстракции просачивается. B быстрый и грязный, но если это одноразовый пользовательский элемент управления, это не окажет отрицательного влияния.

Создать события довольно легко, многие программы включают шаблоны для событий, которые означают, что они вводят только имя события (например, Resharper).

1 голос
/ 15 января 2009

Вверху головы я бы либо создал новое событие в дочернем пользовательском элементе управления, которое сработало бы при запуске OnRowCommand, либо использовал OnBubbleEvent - я не могу вспомнить точное имя, но это что-то вроде этого.

...