我在布局中有两个渲染UserControls - UserControl1.ascx和UserControl2.ascx,通过sitecore演示文稿详细信息动态分配。
如何使用事件冒泡从UserControl2.ascx调用方法(UserControl1.ascx中的GetLabelText())?
这是我的示例代码 - 当我单击按钮(UserControl1.ascx中的UserControl2Button1)时 - 我想从UserControl2.ascx调用方法GetLabelText() - 使用事件冒泡。
答案 0 :(得分:1)
你有一点设计问题。您需要一些明确定义的父/子关系。这不是Sitecore的真正问题......如果您考虑如何在Sitecore之外解决这个问题,那么正确的解决方案可能会很明显。
首先,我将创建一个显式引用UserControl1和UserControl2的新Sublayout。我们称之为ParentControl。然后将自定义事件添加到UserControl2。我们称之为CustomButtonClick。然后,ParentControl订阅该事件就像订阅任何控件事件一样:
UserControl2.CustomButtonClick += new EventHandler(UserControl2_CustomClick);
然后在事件处理程序中:
void UserControl2_CustomClick(object sender, EventArgs e)
{
UserControl1.GetLabelText();
}
在Control1和Control2的Presentation Details intead中使用ParentControl,你就完成了。您现在已经在这些控件(通过ParentControl)之间创建了显式关系,而不是您尝试实现的隐含关系。你不能吃蛋糕也不能吃它......至少,不要违反良好的设计原则。