Обновление пользовательского веб-элемента управления на основе другого пользовательского веб-элемента управления - PullRequest
4 голосов
/ 13 февраля 2011

У меня есть пользовательский веб-элемент управления, в котором есть элемент управления Treeview.Я создал еще один пользовательский элемент управления, который содержит Gridview вместе с несколькими другими элементами управления.

Gridview должен обновляться каждый раз, когда пользователь выбирает другой TreeNode из моего Treeview.
После некоторого поиска, что может быть решением:

  • Добавить и поднятьсобытие из пользовательского элемента управления, которое срабатывает при изменении выбранного узла Treeview.Создание пользовательского аргумента события, содержащего значение узла, позволяет передавать его непосредственно обработчику события.

Если да, можете ли вы показать мне основной рабочий пример, который реализует этот подход?
Спасибо.

1 Ответ

3 голосов
/ 14 февраля 2011

Вы можете позволить своему коду главной страницы обрабатывать пользовательское событие из элемента управления Treeview. Затем в обработчике событий вызовите открытый метод в элементе управления gridview.

Если control1 - ваше дерево управления, а control2 - сетка:

Главная страница aspx (установите обработчик события control1 для метода на этой странице):

<%@ Register Src="~/Controls/WebUserControl1.ascx" TagName="Control1" TagPrefix="ctrl" %>
<%@ Register Src="~/Controls/WebUserControl2.ascx" TagName="Control2" TagPrefix="ctrl" %>
<ctrl:Control1 ID="control1" runat="server" OnTreeNodeChanged="Control1_TreeNodeChanged" />
<ctrl:Control2 ID="control2" runat="server" />

Код главной страницы:

    public void Control1_TreeNodeChanged(object sender, EventArgs e)
    {
        control2.ReloadGrid();
    }

Код управления деревом

public event EventHandler TreeNodeChanged;

protected void FromYourTreeNodeEvent(object o, EventArgs e)
{
    //fire your custom event

    if (TreeNodeChanged!= null)
    {
        TreeNodeChanged(this, EventArgs.Empty);
    }            
}

Код управления сеткой

    public void ReloadGrid()
    {
        //do something
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...