根据另一个Web用户控件更新Web用户控件

4
我有一个包含Treeview控件的Web用户控件。我创建了另一个用户控件,其中包含GridView以及其他一些控件。
当用户从我的Treeview选择不同的TreeNode时,GridView应该自动更新。
经过一些搜索,可能的解决方案是:
添加并触发一个事件,该事件在Treeview选定节点更改时触发。创建一个包含节点值的自定义事件参数,可以直接传递给事件处理程序。
如果是这样,请问您能否向我展示一个基本的工作示例,以实现此方法?
谢谢。
1个回答

3
你可以让主页代码处理来自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
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接