2009-07-07 3 views
0

mit C# (asp.net)Wie können Benutzer eingegebene Daten von einem dynamisch erstellten Steuerelement in den Sitzungszustand gespeichert werden?

Ich programmiere programmatisch mehrere Dropdown-Listen (Zufallszahl). der Benutzer wählt einen bestimmten Wert aus jeder Liste und ich muss den Benutzer ausgewählten Wert speichern.

Wenn ich versuche, die Daten in den Sitzungszustand zu speichern, indem ich ein Button-Klick-Ereignis verwende, wird das Drop-Down-Listenobjekt nicht erstellt. (Offensichtlich cuz ich die Dropdown-Listen in der Seite laden Ereignis unter! IsPostBack.)

Wenn ich versuche, die Daten in Sitzungszustand in der Seite laden Ereignis unter IsPostBack ich nur erhalten den ersten Wert von jedem Liste. (Offensichtlich cuz, wenn die Seite nach dem Postback neu erstellt wird, die Dropdown-Listen wurden neu erstellt und die vom Benutzer eingegebenen Daten gehen verloren).

Wie speichere ich den vom Benutzer ausgewählten Wert aus den Dropdown-Listen, wenn auf eine Schaltfläche geklickt wird? Ich mache das im Code hinter der Datei.

+0

Wie sieht die Seite cylce aus, Rendern Sie die Seite und erstellen Sie die Dropdowns über Javascript, oder erstellen Sie sie auf jeder Auswahl oder ... –

Antwort

0

zu folgen, wie John Saunders sagte, haben Sie auf jedem Postback alle Ihre Steuerelemente Dropdownlist zu erstellen. Außerdem müssen Sie sie erstellen, bevor State wiederhergestellt wird. Das bedeutet, dass "unter! IsPostBack" im Seitenladeereignis bereits zu spät ist. Verschiebe es nach Page Init.

+0

ahhh, ok. Ich werde die Steuerelemente in der Seiteninitialisierung erstellen. Auf diese Weise wird beim Klicken des Klickereignisses eine Instanz jedes Dropdownlistenobjekts vorhanden sein. in der Tat denke ich, dass insgesamt zwei Seitenzyklen verwendet. –

0

Sie müssen alle Dropdown-Listen für jeden Postback neu erstellen.

0

Persönlich (ohne die Möglichkeit, zu MVC wechseln) würde ich in Betracht ziehen, die Postbacks loszuwerden und die Werte direkt aus einer Standard-HTTP-POST-Anforderung zurück zu lesen.

Die Implementierung von dynamischen Kontrollen mit Postbacks endet oft ziemlich verworren und schwer

+0

true. Ich habe jetzt eine weitere detaillierte Lektüre des Seitenlebenszyklus. immer noch neu für Online-Entwickler, so wird es eine Weile dauern, bevor ich zu MVC und HTTP-Posts komme. –

+0

Wenn Sie neu zu Online-Entwickler sind, würde ich wirklich empfehlen, MVC anstatt Web Forms zu lernen. –