2009-05-22 28 views
4

実行時にパネルでファイルアップロードコントロールをいくつか作成しました。今すぐ リンクボタンをクリックしてコントロールを削除します。asp.netで動的に作成されたコントロールを削除する方法

私はこれをどのように行うことができます。..次

が動的にコントロールをクレートためのコード..です

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    Panel1.Visible = true; 
    newattach(count); 
    count++;  
} 
private void newattach(int tot) 
{ 
    int i; 
    for (i = 0; i < tot; i++) 
    { 

     f1 = new FileUpload(); 
     f1.ID = "FileUpload" + count.ToString(); 
     f1.Height =20; 
     f1.Width = 150; 
     Panel1.Controls.Add(f1); 
    } 

} 

答えて

0

私はそれを試していませんでしたが、私はあなたが知っていれば、次はあなたのために働くべきだと思います削除するコントロールのID:

Panel1.Controls.Remove(Panel1.FindControl("FileUploadID")); 
0

がコントロールのみボタンのクリックで追加されたとして、あなたはとにかくポストバックの他の種類を行うとき、それはそこではありません。

7

としてはmatt ?! ;)

Panel1.Controls.Remove(Panel1.FindControl("FileUploadID")); 

動作するはずで上記の答え、しかし:

ファイル名を指定して実行します全体のページでは、いくつかの奇妙なものを見つけるでしょうデバッガの谷....そしてにおける理解ページのライフサイクルなし。ページのライフサイクルの中でダイナミックコントロールを作成するタイミングに応じて、コントロールを再表示させるダイナミックコントロールについての基本的な原則と同様に、コントロールの中に適切なダイナミックコントロールを作成する方法の詳細については、方法。だから、:

asp.netの動的コントロール - ユーリーSolodkyyすることにより、これらの原則が適用されます。

を動的にコントロールを作成するには、この一貫性のあるアプローチに従ってください:

  1. CreateChildControlsの方法でコントロールを作成します。
  2. LoadViewStateのEnsureChildControlsを呼び出します。
  3. Pairオブジェクトのビューステートをラップして展開して、LoadViewStateを強制的に呼び出します。
  4. ViewStateでサポートされているプロパティで、ページの動的部分のレイアウトを保存します。
  5. イベントハンドラでのユーザーの操作に応じてダイナミックコントロールを再作成します。

その他の重要な注意事項:

  1. は、親コントロールのControlsコレクションに追加する前に、あなたのコントロールを設定します。
  2. 動的に作成されたコントロールに一意のIDを割り当てます。
  3. ローカルフィールドの動的に作成されたコントロールへの参照を保持します。
  4. 投稿データは、OnLoadの前とOnLoadの後の2回処理されることに注意してください。

    using System; 
    using System.Collections; 
    using System.Configuration; 
    using System.Data; 
    using System.Web; 
    using System.Web.Security; 
    using System.Web.UI; 
    using System.Web.UI.HtmlControls; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.WebControls.WebParts; 
    
    
    public partial class template : BasePageGui 
    { 
    
    
         #region Introduction 
         private string msg; //this is the message you are going to show to your users 
    
    
         private TextBox [ ] holderForTxt;  //holder for dynamic textboxes 
         private DropDownList [ ] holderForDdl; 
         private HtmlInputRadioButton [ ] holderForRdb; 
         private HtmlInputCheckBox [ ] holderForCkb; 
    
         private Label [ ] holderForAst; 
    
         DataSet ds;    //dataset for metadata 
         DataSet pds;   //parameter dataset 
         DataSet rds;   //return set dataset 
    
    
         #endregion 
    
    
         #region Properties 
         //set here page properties to use with the viewstate 
         #endregion //Properties 
    
    
         #region TemplateMethods 
         protected override void OnInit (EventArgs e) 
         { 
         } //eof OnInit 
    
    
         protected override void CreateChildControls() 
         { 
           base.CreateChildControls(); 
           CreateDynamicControls(); 
         } 
    
    
         protected override object SaveViewState() 
         { 
           return new Pair (base.SaveViewState() , null); 
         } 
    
         protected override void LoadViewState (object savedState) 
         { 
           base.LoadViewState (((Pair) savedState).First); 
           EnsureChildControls(); 
         } 
    
    
         protected void Page_Load (object sender , EventArgs e) 
         { //comm -- the controls should be generated at the init stage and the databinding happens here 
    
           if (this.IsPostBack == false) 
           { 
           } //eof on first load 
           else 
           { 
           } //eof on post back 
           this.DataBind(); 
         } //eof method 
    
    
    
         private void CreateDynamicControls() 
         { 
    
         } //eof method 
    
         #endregion //TemplateMethods 
    
    
         #region DisplayMethods 
    
    
         #endregion //DisplayMethods 
    
    
         #region ClickEventHandlers 
    
        #endregion ClickEventHandlers 
    
    
         #region GridViewEventHanlders 
    
        #endregion //GridViewEventHandlers 
    } //eof class 
    

私は一般的に、ページテンプレートの後ろに以下のコードを使用します

関連する問題