2009-06-12 26 views
1

私はマスターページとコンテンツプレースホルダを持っています。 contentplaceholderには、そのプレースホルダのプレースホルダーがあります。私は動的リンクボタンを挿入します。私はページリンクボタンを実行すると、ページに表示されません。リンクボタンを動的に追加します

for (int i = 0; i < UserCredentialsDT.Rows.Count; i++) 
{ 
    switch (Convert.ToInt32(UserCredentialsDT.Rows[i]["RoleId"])) 
    { 
     case (int)Helper.UserRole.Administrator: 
      Session[AppConstants.ROLEID] = UserCredentialsDT.Rows[i]["RoleId"]; 
      LinkButton lnkAdmin = new LinkButton(); 
      lnkAdmin.Text = "Admin"; 
      lnkAdmin.ID = "lnkAdmin" + i.ToString(); 
      PlaceHolder1.Controls.AddAt(PlaceHolder1.Controls.Count, lnkAdmin); 
      lnkAdmin.Visible = true; 
      lnkAdmin.PostBackUrl = PresentationConstant.ASPX_ADMINSETTINGS; 
      break; 
    } 
} 
+0

そのプレースホルダは、現在のページとは異なるコンテンツプレースホルダにありますか?あなたはそれを参照できますか?これを変更したい場合は、そのコードにPage_PreInit(オブジェクト送信者、EventArgs e)イベントハンドラのコードを挿入し、AutoEventWireUpをtrueに設定して動作させる必要があります。 –

答えて

3

これを動的に追加する場合は、使用するページサイクルの段階を確認することをお勧めします。これは他の要因によっても変わることがあります。しかし、あなたのPreInit、Init、およびLoadイベントを必ず読んでください。

2

これはMasterPages ContentPlaceHolderの内部では実行できません。また、ContentPlaceHolderは、MasterPageを使用するWebFormsのためのものです。 PlaceHolderコントロールをContentPlaceHolderの外に置くことをお勧めします。 MSDNから

A ContentPlaceHolderコントロールは マスターページのコンテンツを 相対領域を定義し、 に見出さ 関連コンテンツコントロールからすべてのテキスト、 マークアップ、およびサーバーコントロールをレンダリングコンテンツページ。

関連する問題