0

我有两个渲染用户控件 - 布局中的 UserControl1.ascx 和 UserControl2.ascx,通过站点核心演示详细信息动态分配。

如何使用事件冒泡从 UserControl2.ascx 调用方法(UserControl1.ascx 中的 GetLabelText())?

这是我的示例代码 - 当我单击按钮(UserControl1.ascx 中的 UserControl2Button1)时 - 我想从 UserControl2.ascx 调用 GetLabelText() 方法 - 使用事件冒泡。

4

1 回答 1

1

你有一点设计问题。您需要一些明确定义的父/子关系。这并不是一个真正的 Sitecore 问题......如果您考虑如何在 Sitecore 之外解决这个问题,那么正确的解决方案可能会很明显。

首先,我将创建一个明确引用 UserControl1 和 UserControl2 的新子布局。我们将其称为 ParentControl。然后将自定义事件添加到 UserControl2。我们称之为CustomButtonClick。ParentControl 然后订阅该事件,就像它订阅任何控件事件一样:

UserControl2.CustomButtonClick += new EventHandler(UserControl2_CustomClick);

然后在事件处理程序中:

void UserControl2_CustomClick(object sender, EventArgs e)
{
    UserControl1.GetLabelText();
}

在您的演示详细信息中使用 ParentControl 而不是 Control1 和 Control2,您就完成了。您现在已经创建了这些控件之间的显式关系(通过 ParentControl),而不是您试图实现的隐含关系。你不能一边吃蛋糕一边吃……至少,在不违反良好设计原则的情况下是这样。

于 2012-11-28T21:40:19.267 回答