簡體   English   中英

回發后未顯示用戶控件

[英]User control not displayed after postback

我有一個home.aspx頁面,其中有兩個面板。 在第一個面板中,我動態綁定了一個用戶控件(用於在左側顯示meiny),在第二個面板中,我顯示了頁面。 我在頁面加載時動態地綁定用戶控件。

if (!IsPostBack)
    {
        UserControl uc = (UserControl)Page.LoadControl("~/settings/Links/Navigation.ascx");
        Accordion1.Controls.Add(uc);          

    }

第一次加載頁面時,綁定了usercontrol並顯示了菜單,但是當我單擊任何菜單項時,它將隱藏(user control),

請幫助我,在此先感謝!

將這行代碼放在Page生命周期的Page_Init事件中。

UserControl uc = (UserControl)Page.LoadControl("~/settings/Links/Navigation.ascx");
Accordion1.Controls.Add(uc);    

合適的方式:

protected void Page_Init(object sender, EventArgs e)
{

      //MyControl is the Custom User Control with a code behind file
      MyControl myControl = (MyControl)Page.LoadControl("~/MyControl.ascx");

      //UserControlHolder is a place holder on the aspx page where I want to load the
      //user control to.
      UserControlHolder.Controls.Add(myControl);

}

如果使用if (!IsPostBack)則回發后將不會添加到頁面中。 第一次時,您將可以在頁面上看到控件。

參考:
ASP.NET自定義用戶控件可動態添加
如何:以編程方式創建ASP.NET用戶控件的實例

這是一個動態控件,必須在每次回發時將其重新創建並讀入頁面。

所以這將工作:

//if (!IsPostBack)
//{
    UserControl uc = (UserControl)Page.LoadControl("~/settings/Links/Navigation.ascx");
    Accordion1.Controls.Add(uc);          
//}

對於動態控制,無需頁面的!IsPostBack屬性,刪除此屬性並使用

UserControl uc = (UserControl)Page.LoadControl("~/settings/Links/Navigation.ascx");
Accordion1.Controls.Add(uc);

必須在每個回發中加載它。 將用戶控件的加載代碼保持在if(!IsPostBack){}之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM