首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET 2个动态加载的用户控件如何响应彼此的事件?

ASP.NET 2个动态加载的用户控件如何响应彼此的事件?
EN

Stack Overflow用户
提问于 2009-08-21 01:45:12
回答 3查看 1.6K关注 0票数 0

问候所有人,我在一个aspx页面的page-init事件中加载了两个ascx。控件1有一个单选按钮列表,我希望控件2上有一个下拉列表来响应它的selectedIndex更改。到目前为止,我在SelectedIndexChange处理程序上调用了RaiseBubbleEvent,并传递了一个控件引用和commandArgs。然后,在aspx中,我覆盖了OnBubbleEvent,并且我能够接收到控件引用和commandArgs。我的问题是如何将此信息传递给控件2。页面不知道这些控件,因为它们是动态加载并添加到aspx中的asp:占位符的。我需要控件2来知道选择了哪个单选按钮,这样我就可以更改控件2上的下拉列表的数据源。如有任何建议或建议,我们将不胜感激。

谢谢,圣地亚哥的ck

EN

回答 3

Stack Overflow用户

发布于 2009-08-21 02:09:39

我不确定这是一个非常好的解决方案,但它应该可以工作。为控件2中的事件创建一个处理程序,并以某种方式访问该处理程序的委托。然后只需将控件1的事件连接到该访问器返回的处理程序即可。非常粗糙的例子:

在control1中:

代码语言:javascript
复制
public event SelectedIndexChanged;

public void PageLoad()
{
    radioList.SelectedIndexChanged += new EventHandler(RadSelectedIndexChanged);
}

public void RadSelectedIndexChanged(object sender, EventArgs args)
{
    SelectedIndexChanged(sender, args);
}

在aspx页面中:

代码语言:javascript
复制
control1.SelectedIndexChanged += control2.GetHandler();

在control2中:

代码语言:javascript
复制
public EventHandler GetHandler()
{
    return new EventHandler(HandleEvent);
}

protected void HandleEvent(object sender, EventArgs args)
{

}
票数 0
EN

Stack Overflow用户

发布于 2009-08-21 02:10:21

那么,控件2实际上应该只是附加到另一个控件的'SelectedIndexChanged‘事件。出于某种原因,这是不可能的吗?

票数 0
EN

Stack Overflow用户

发布于 2009-08-21 03:24:48

既然您提到页面不知道这些控件,那么最好让Control1类使用I-want- to -listen- to -your-event设置器方法公开一个接口。

Control2应该在其父控件(页面)中搜索实现该接口的其他同级控件,然后调用设置器,并将引用传递给它们的处理程序。

这样,控件无需修改即可拖放到任何其他页面上。

编辑:

添加了下载的sample web application。源代码被发布到公共领域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1309709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档