2012-03-30 63 views
0

我遇到了這個問題中指定的幾乎相同的問題。任何人都可以爲此發佈答案嗎?這個問題沒有明確的答案。C# - 動態加載用戶控制按鈕單擊

Issue with dynamically loading a user control on button click

在此前述的問題,他被加載到控制存在於第一用戶控制的佔位符。我的情況稍有不同。我的場景是我有一個單獨的aspx頁面,UserControl1和UserControl2。一開始,我將加載UserControl1到Page。然後,當用戶單擊UserControl1中的按鈕時,我需要卸載userControl1並將UserControl2加載到頁面。

+0

什麼你完全不明白?你有什麼嘗試? – walther 2012-03-30 11:46:20

+0

@walther - 在標記的答案中,'〜/ UserCtrl2.ascx'將從Button1_Click()事件添加到PlaceHolder2中。但是PlaceHolder2存在於Default.aspx中,並且Button1位於UserCtrl1.ascx中。和SecondControlLoaded viewstate與Default.aspx.cs我想。但是,它在UserCtrl1.ascx.cs中鏈接,請在標記的答案中查看Kumar的評論。 「你可以發佈完整的代碼嗎?我猜測SecondControlLoaded是UserCtrl1中的一個bool屬性,它保存了viewstate的值......」如果你可以發佈完整的代碼,這將非常有幫助。 – mlg 2012-03-30 11:57:03

回答

0

你需要爲UserControl1和泡沫事件到頁面創建自定義事件處理程序單擊按鈕時。

UserControl1創建自定義事件處理程序:

public event EventHandler UpdateButtonClick; 

public void OnUpdateButtonClick(EventArgs e) 
{ 
    if (UpdateButtonClick!= null) 
     UpdateButtonClick(this, e); 
} 

指定爲UserControl1事件處理程序:

<uc:UserControl1 ID="UserControl1" runat="server" 
    OnUpdateButtonClick="UserControl1_UpdateButtonClick" ... /> 

處理的代碼隱藏事件:

protected void UserControl1_UpdateButtonClick(object sender, EventArgs e) 
{ 
    UserControl1.Visible = false; 
    UserControl2.Visible = true; 
} 
+0

謝謝@james。我會嘗試這段代碼並讓你知道。 – mlg 2012-03-30 20:10:06

+0

對不起,很晚回覆。但仍然需要加載頁面加載中的所有用戶控件,對吧? – mlg 2012-04-09 08:59:48

+0

是的,你也可以動態加載它們。雖然不是'Page_Load',我會重寫'OnInit'並將它們添加到控件集合中。 – 2012-04-09 13:25:12

相關問題