基于另一个 Web 用户控件更新 Web 用户控件

发布于 2024-10-17 07:34:51 字数 296 浏览 2 评论 0原文

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

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

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

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

I have a web user control which has a Treeview control inside it. I have created another user control which contains a Gridview along with a couple of other controls.

The Gridview, should update itself whenever the user selects a different TreeNode from my Treeview.
After some searching, What could possibly be the solution:

  • Add and raise an event from the user control that fires when the Treeview selected node changes. Creating a custom event argument that contains the node value, allows it to get passed directly to the event handler.

If so, can you show me a basic working example which implements this approach?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

画中仙 2024-10-24 07:34:51

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

You could let your main page code behind handle a custom event from the Treeview control. Then in the event handler call a public method in the gridview control.

If control1 is your tree control and control2 is your grid control:

Main Page aspx (set control1 event handler to a method in this page):

<%@ 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" />

Main Page code behind:

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

Tree control code

public event EventHandler TreeNodeChanged;

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

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

Grid control code

    public void ReloadGrid()
    {
        //do something
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文