2016-11-30 2 views
1

ich eine aspx-Seite mit dem folgenden Code haben:Dynamische Steuerung hinzufügen verschwinden nach dem Postback

<asp:Table ID="JsonContent" runat="server"> 
    </asp:Table> 

In meinem hinter Code bei Page_Load i Artikel Tabelle hinzuzufügen.

Tabelle bestehen zwei Reihen:

Row num 0 Cell ist die TextBox

Row num 1 enthalten ist Zelle, die TextBox

zusätzlich habe ich eine Schaltfläche save, wenn der Benutzer auf die Schaltfläche Ich muss über alle Tabellenzeilen gehen und die Daten unter Text Prop in Datei schreiben.

Das Problem ist, dass, wenn ich auf Button Save das Ereignis page_load auslösen und alle text box Steuerelement ist nicht bereits vorhanden, so kann ich nicht die bearbeiteten Daten in Datei schreiben.

Ich lese über ähnliche Post mit diesem Problem, konnte aber keine Lösung bekommen.

Vielen Dank!

+1

Sie sollten alle dynamisch hinzugefügten Steuerelemente in 'Pageinit' in jedem Postback neu erstellen, da alle Objekte entfernt werden, wenn HTML an den Client gesendet wird. Aber selbst wenn Sie sie dort neu erstellen, behalten sie die Benutzereingabe bei, wenn Sie dieselbe ID wie zuvor zuweisen. –

+0

Können Sie die Frage mit Ihrem Seitenladecode aktualisieren? – Damith

+0

@TimSchmelter Ich versuche deine Lösung, nachdem ich die TextBox mit der gleichen ID erstellt habe, Wie füge ich es wieder asp.net Seite hinzu? Das Problem ist alle Kontrolle sind null, d. H. Mein Panel, das die dynamische TextBox – maz

Antwort

0

Zunächst einmal sollten Sie sich über asp.net Web-Seiten Zyklus lernen: https://msdn.microsoft.com/en-us/library/ms178472.aspx

Und ich würde sagen, dass @TimSchmelter die perfekte Lösung für Sie hat in den Kommentaren:

„Sie sollten (Wieder- -) alle dynamisch hinzugefügten Steuerelemente in Page_Init in jedem Postback erstellen, da alle Objekte beim Senden von html an den Client entfernt werden. Aber selbst wenn Sie sie dort neu erstellen, behalten sie die Benutzereingabe bei, wenn Sie die gleiche ID wie zuvor vergeben haben "

Das bedeutet, dass Sie die Funktion page_init verwenden müssen (ähnlich wie page_load b ut nicht automatisch generiert, müssen Sie es manuell schreiben)

Ich habe dies auch einmal, und ich glaube, dass Tims Lösung funktioniert.

Stellen Sie sicher, dass Ihre page_init() -Funktion erreicht ist.

Verwandte Themen