1

私は2つのパネルがあるhome.aspxページを持っています。最初のパネルでは、(左側に meiny を表示するために) ユーザー コントロールを動的にバインドし、2 番目のパネルではページを表示しました。ページの読み込み時にユーザーコントロールを動的にバインドしました。

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

    }

ページが初めてロードされたときusercontrolはバインドされ、メニューが表示されますが、メニュー項目をクリックすると非表示になります(ユーザーコントロール)、

助けてください、よろしくお願いします!

4

4 に答える 4

5

このコード行をページ ライフ サイクルの 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);

}

thenを使用するif (!IsPostBack)と、ポストバック後にページに追加されません。最初は、ページ上にコントロールが表示されます。

リファレンス:
動的に追加する ASP.NET カスタム ユーザー コントロール
方法: ASP.NET ユーザー コントロールのインスタンスをプログラムで作成する

于 2013-05-17T09:50:06.917 に答える
0

これは、ポストバックごとに再作成してページに再度追加する必要がある動的コントロールです。

したがって、これは機能します:

//if (!IsPostBack)
//{
    UserControl uc = (UserControl)Page.LoadControl("~/settings/Links/Navigation.ascx");
    Accordion1.Controls.Add(uc);          
//}
于 2013-05-17T09:49:57.510 に答える