【问题标题】:Updating a web user control based on another web user control基于另一个 Web 用户控件更新 Web 用户控件
【发布时间】:2011-02-13 09:32:31
【问题描述】:

我有一个 Web 用户控件,里面有一个 Treeview 控件。我创建了另一个用户控件,其中包含一个 Gridview 和几个其他控件。

当用户从我的 Treeview 中选择不同的 TreeNode 时,Gridview 应该会自行更新。
经过一番搜索,可能是什么解决方案:

  • 添加并引发用户控件的事件,该事件在 Treeview 选定节点更改时触发。创建一个包含节点值的自定义事件参数,允许它直接传递给事件处理程序。

如果是这样,你能告诉我一个实现这种方法的基本工作示例吗?
谢谢。

【问题讨论】:

    标签: asp.net webforms event-handling web-user-controls


    【解决方案1】:

    您可以让后面的主页代码处理来自 Treeview 控件的自定义事件。然后在事件处理程序中调用gridview控件中的公共方法。

    如果 control1 是您的树控件,而 control2 是您的网格控件:

    Main Page 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
        }
    

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2015-10-04
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多