2009-05-06 4 views
1

Grüße, hoffentlich gibt es eine einfache Lösung für dieses komplexe Problem. Bitte korrigieren Sie Missverständnisse, die ich auf dem Weg habe. Vor einiger Zeit habe ich einen GrivView mit dynamischer Spaltenfunktion geschrieben. Die Spalten werden im OnInit-Seitenereignis hinzugefügt, sodass sie hinzugefügt werden, BEVOR der Anzeigestatus angewendet wird. Sie werden bei jedem Posting in diesem Abschnitt der Seite erneut angewendet, so dass beim Anwenden des Viewstate Änderungen beibehalten werden, die der Benutzer vorgenommen hat und die nicht an die Datenbank gebunden sind. Es ist auch erforderlich, wenn Sie nicht möchten, dass Ihr ViewState Control Tree nicht synchron läuft und alles in die Luft geht.Ermitteln DDL-Wert für die dynamische Erstellung von Spalten in oninit Ereignis

Mein aktuelles Problem ist, dass ich nun im Wesentlichen dasselbe tun soll, wo die Spalten basierend auf einer Drop-Down-Liste unterschiedlich sein werden (Ich werde das GridView neu erstellen, wenn das ddl ändert, und die Benutzer alle Arbeit verlieren eine Warnung). Wie kann ich die ID, die in der Dropdown-Liste im OnInit-Ereignis ausgewählt ist, abrufen? Mein Verständnis ist, dass, wenn der Benutzer den Wert des ddl auf der Clientseite ändert, ein JavaScript "__doPostBack" -Aufruf ausgelöst wird. Die Seitenanforderung wird dann an den Server gesendet, aber zu dem Zeitpunkt, zu dem der neue Wert im Ereignishandler vorhanden ist, bin ich über den Punkt hinaus, an dem ich die Spalten hinzufügen muss.

Ich habe etwas gesehen, das ich für vielversprechend hielt, wenn Leute versuchten herauszufinden, welches Steuerelement einen Post zurück verursacht hat, aber dieser Code beruht auf page.Request.Params.Get ("__ EVENTTARGET"); und page.Request.Form, die leer sind.

Sollte ich den Sitzungszustand betrachten, versuchen Sie, die ID mit Hilfe der clientseitigen Manipulation oder einer anderen Methode zu senden (Vielleicht eine hinterhältige Art, in den Viewstatus zu sehen, den ich vermisse)?

Danke für jede Idee !!!

Antwort

2

Der übermittelte Wert eines Steuerelements ist in der Sammlung Request [] verfügbar, auch wenn das Formular anscheinend noch nicht rekonstruiert wurde.

Sie sollten einfach Lage sein, den gewählten Wert während der Init() unter Verwendung der folgenden zu erhalten:

string value = Request["myDropDownID"]; 
+0

Aus irgendeinem Grund funktioniert dies nur auf den ersten Postbacks. Noch bessere Antwort als meine +1 –

Verwandte Themen