2012-11-28 52 views
0

我有兩個渲染UserControls - UserControl1.ascx和UserControl2.ascx在佈局中,動態分配通過sitecore演示文稿的詳細信息。Sitecore - 活動冒泡

如何使用事件冒泡從UserControl2.ascx中調用方法(UserControl1.ascx中的GetLabelText())?當我點擊按鈕(UserControl1.ascx中的UserControl2Button1) - 我想從UserControl2.ascx調用方法GetLabelText() - 使用事件冒泡。

+0

它看起來像_not good_design。但是您可以嘗試使用外部存儲(如Page或Sitecore變量)。或者在UC2中創建一個自定義事件 - 在點擊按鈕時提高它。訂閱第二個控件到該事件,並在事件處理程序上做一些代碼... – KoViMa

回答

1

你有一點設計問題。您需要一些明確定義的父母/子女關係。這不是一個真正的Sitecore問題......如果您考慮如何在Sitecore之外解決這個問題,那麼正確的解決方案可能會很明顯。

首先,我將創建一個新的Sublayout,它明確引用UserControl1和UserControl2。我們將它稱爲ParentControl。然後將自定義事件添加到UserControl2。我們將調用該CustomButtonClick。 ParentControl然後訂閱該事件就像它會訂閱任何控制事件:

UserControl2.CustomButtonClick += new EventHandler(UserControl2_CustomClick); 

然後在事件處理程序:

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

使用ParentControl在演示文稿中詳細這一翻譯控制1和控制2,你的」重做。您現在已經通過ParentControl創建了這些控件之間的顯式關係,而不是您想要實現的隱含關係。你不能吃你的蛋糕,至少,不違反良好的設計原則。