2016-05-05 2 views
0

Ich bin in einem Problem stecken, versuchte googeln, konnte aber keine Lösung finden.Erfassen des Werts von dynamisch erstellten TextBox und DropDownList in ASP.NET

Ich habe Kontrollen dynamisch in Page_Load erstellt und ich habe eine statische Schaltfläche.

Wenn Sie auf die Schaltfläche klicken, muss ich den Benutzereintrag in diesen Steuerelementen erfassen.

Wenn ich jetzt versuche, mit seiner eindeutigen ID auf das Steuerelement zuzugreifen, wird ein Fehler zurückgegeben, da das Steuerelement zur Laufzeit nicht verfügbar ist. :(

For-Schleife - startet

if (dr["Type"].ToString().Trim() == "DropDown") 
    { 
     DropDownList ddl = new DropDownList(); 
     ddl.Id = "ddl" + Convert.ToString(Counter); 
     ddl.DataTextField = "Text"; 
     ddl.DataValueField = "Value"; 
     ddl.DataSource = ds1; 
     ddl.DataBind(); 
     ddl.EnableViewState = true; 
     cell.Controls.Add(ddl); 
    } 
    else if (dr["QuestionType"].ToString().Trim() == "TextBox") 
    { 
     TextBox txt = new TextBox(); 
     txt.ID = "txt" + Convert.ToString(Counter); 
     txt.EnableViewState = true; 
     cell.Controls.Add(txt); 
    } 
    row.Cells.Add(cell); 
    table.Rows.Add(row); 

Auch wenn ich ein FindControl in Btn_click Funktion zu tun, heißt es, dass die Platte 0 Kontrollen hat

var textbox = (TextBox)pnlMidTermFeedback.FindControl("txt5"); 

Textbox immer NULL ist, obwohl ich. habe eine Kontrolle txt5 Ich kann es sehen, wenn ich eine F12 mache Leasing Hilfe.

+0

Ich löste es, indem ich die Kontrolldetails implizit dem Viewstate hinzufügte. –

Antwort

0

dynamisch erstellte Steuerelemente muß auf jedem Postback neu erstellt werden:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     // Set values and properties of controls specified in markup 
     ... 
    } 

    // Create new controls and add them to the panel 
    ... 
} 

Sie werden dann in der Schaltfläche Event-Handler zur Verfügung und enthält die vom Benutzer eingegebenen Daten.

Verwandte Themen