2013-01-22 92 views
1

我想加載按鈕點擊usercontrols,但問題是,它在用戶控制回發內消失。按鈕點擊動態加載用戶控件,回發問題

這是我如何加載控件:

private bool IsUserControl 
{ 
    get 
    { 
     if (ViewState["IsUserControl"] != null) 
     { 
      return (bool)ViewState["IsUserControl"]; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    set 
    { 
     ViewState["IsUserControl"] = value; 
    } 
} 


#region Usercontrols 
private void CreateUserControlAllNews() 
{ 
    Control featuredProduct = Page.LoadControl("path/usercontrol.ascx"); 
    plh1.Controls.Add(featuredProduct); 
} 

#endregion 
protected void allNewsbtn_Click(object sender, EventArgs e) 
{ 

    this.IsUserControl = true; 
    if(IsUserControl) 
    CreateUserControlAllNews(); 
} 

回答

4

您需要重新加載控制頁面時後回來。例如,

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsUserControl) 
    { 
     CreateUserControlAllNews();   
    } 
} 

private void CreateUserControlAllNews() 
{ 
    Control featuredProduct = Page.LoadControl("path/usercontrol.ascx"); 
    featuredProduct.ID = "1234"; 
    plh1.Controls.Add(featuredProduct); 
} 
+0

THX的幫助。但問題是,我有菜單like linkbuttons,我想加載不同的usercontrols每次點擊。如果我在每次回發時加載控件,它們都將保留在屏幕上。對不起我的英文不好,希望你能理解我的帖子。 – Mandragorasprout

+0

我在這裏回答了類似的問題http://stackoverflow.com/a/14449305/296861。如果控件的類型是混合的,則需要在ViewState中存儲SortedDictionary,而不是列表。 – Win

1

當然它消失,每一個請求創建你的頁面的一個全新的實例,如果你不重新創建上回發那麼它不會存在控制。

請參閱以下有關此常見問題的鏈接。

Singing eels

Another SO question