2009-05-22 20 views
4

Ich habe einige Dateiupload-Steuerelement zur Laufzeit in einem Panel erstellt .. Jetzt möchte ich Steuerelement auf einen Klick auf Link-Schaltfläche entfernen.Wie dynamisch erstellte Steuerelemente in asp.net entfernt werden

wie kann ich dies tun ..

folgenden ist der Code für die dynamische Steuerung .. Kistenverpackungen

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); 
    } 

} 

Antwort

0

Ich habe es nicht versucht, aber ich denke, die folgende sollte für Sie arbeiten, wenn Sie wissen die ID der Steuer Sie entfernen möchten:

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

Da die Steuerung nur auf dem Klick auf eine Schaltfläche hinzugefügt, es wird nicht da sein, wenn Sie eine andere Art von Postbacks sowieso tun.

7

Wie beantwortet oben matt ?! ;)

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

arbeiten sollte, aber:

Run Sie ganze Seite des Debuggers Trog einige seltsame Dinge finden .... Und ohne Verständnis Seite Lebenszyklus. Sowohl bei Net- als auch Basis-Principles über dynamische Steuerelemente kann es passieren, dass Ihre Steuerelemente wieder angezeigt werden. Je nachdem, wann Sie im Seitenlebenszyklus Ihre dynamische Steuerung erstellen, lautet die Antwort auf die Frage, wie Sie richtig dynamische Steuerelemente in einem Steuerelement erstellen können Weg. Also:

Dynamische Steuerelemente in asp.net - diese Grundsätze von Yuriy Solodkyy gelten:

Folgen Sie diesen konsistenten Ansatz zu den Kontrollen zu schaffen dynamisch:

  1. Erstellen Steuerelemente in der Createchild Methode.
  2. Rufen Sie EnsureChildControls im LoadViewState auf.
  3. Positionierungsstatus im Pair-Objekt umbrechen und auspacken, um den Aufruf von LoadViewState zu erzwingen.
  4. Speichern Sie das Layout des dynamischen Teils der Seite in Eigenschaften, die in ViewState gesichert sind.
  5. Erstellen Sie dynamische Steuerelemente als Reaktion auf Benutzeraktionen in Ereignishandlern neu.

Weitere wichtige Hinweise:

  1. Konfigurieren Sie Ihre Kontrollen, bevor sie zu den Kontrollen Sammlung der übergeordneten Steuerung hinzufügen.
  2. Weisen Sie dynamisch erstellten Steuerelementen eindeutige IDs zu.
  3. Behalten Sie Verweise auf dynamisch erstellte Steuerelemente in lokalen Feldern.
  4. Denken Sie daran, dass Postdaten zweimal verarbeitet werden: vor OnLoad und nach OnLoad.

ich den folgenden Code im Allgemeinen tun hinter Seitenvorlage verwenden:

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 
Verwandte Themen