Ich habe eine Aspnet-Dropdown-Liste in einem Benutzersteuerelement. Diese Benutzerkontrolle wird in das Webformular geladen. Auf dieser Seite gibt es auch einen Absenden-Button. Beim Postback zeigt das selectedItem nicht den richtigen Wert im Page_load-Handler, sondern zeigt den richtigen Wert in den Pre-render- und render-Handlern. Ich hatte den Eindruck, dass der Viewstate vor page_load gesetzt ist.Dropdown.SelectedIndex hat nicht den richtigen Wert im Page_Load-Ereignis, aber hat den richtigen Wert im Render-Ereignis
Antwort
Wahrscheinlich binden Sie Ihre Dropdown-Liste erneut zwischen pre_render und page_load. Genau wie das Ereignis sagt, können Sie mit pre_render Aufgaben erledigen, bevor die Steuerelemente auf Ihrer Seite gerendert wurden. Sobald Ihre Seite gerendert ist (vor page_load), wird die Dropdown-Liste mit Daten verknüpft und der ausgewählte Wert wird gelöscht.
Der einfachste Weg, dies zu umgehen, besteht darin, die Dropdownliste nur dann im Code zu binden, wenn sie gebunden werden muss, z. B. beim ersten Laden der Seite und nicht beim Zurückschreiben.
if (!IsPostBack)
{
//Do all of your data binding here
DataBind();
}
Hier ist die Lösung, die am besten zu empfehlen ist. Es liegt in Verstehen der Seite Life Cycle korrekt! Postback Controls wie Drop Down List stellen ihren gebuchten Status wieder her (der ausgewählte Artikel einer Drop-Down-Liste). Er vergisst seinen ausgewählten Wert, da Sie ihn im Page_Load-Ereignis erneut binden, nachdem die Dropdownliste mit dem gebuchten Wert geladen wurde (da der Ansichtszustand nach dem Page_Init-Ereignis und vor dem Page_Load-Ereignis geladen wird). Und beim erneuten Binden des Page_Load-Ereignisses vergißt die Dropdown-Liste das wiederhergestellte ausgewählte Objekt. Die beste Lösung besteht darin, die Datenbindung im Page_Init-Ereignis statt im Page_Load-Ereignis durchzuführen.
so etwas wie die unten tun ...
Angenommen Dropdown-Liste Name lstStates ist.
protected void Page_Init(object sender, EventArgs e)
{
lstStates.DataSource = QueryDatabase(); //Just an example.
lstStates.DataTextField = "StateName";
lstStates.DataValueField = "StateCode";
lstStates.DataBind();
}
ASP.NET Lasten Kontrolle des Anzeigestatus nach Page_Init Ereignis und vor dem Ereignis Page Load, so selectedIndex der Drop-Down-Liste werden nicht betroffen sein, und Sie werden die Ergebnisse auf magische Weise erhalten erwünscht !!
- 1. UIDevice Orientierung Rückkehr nicht den richtigen Wert
- 2. jQuery Json nicht ausgibt den richtigen Wert
- 3. Checkbox prüft nicht auf den richtigen Wert
- 4. Laravel Aktualisierung kann nicht den richtigen Wert
- 5. jquery prop liefert NaN aber attr gibt den richtigen Wert
- 6. Das Metadaten-Tag in der AndroidManifest.xml Ihrer App hat nicht den richtigen Wert. - Google Maps
- 7. JPanel mit SpringLayout preferredSize berechnet nicht den richtigen Wert
- 8. Länge der 2D-String-Liste gibt nicht den richtigen Wert
- 9. Index nicht unter den richtigen Wert innerhalb eines $ http.post Abfrage
- 10. mysql DATE-Datentyp nicht takeing den richtigen Wert
- 11. CSV Reader erhält nicht den richtigen Wert vom Array
- 12. Kann nicht den richtigen Wert extrahieren in weniger
- 13. Schienen 3: Warum eine Auswahlbox nicht den richtigen Wert übergibt?
- 14. Swift nicht den richtigen Variablenwert
- 15. Eingabezeichenfolge nicht im richtigen Format
- 16. Qml-Timer nicht im richtigen Intervall ausgelöst
- 17. Eingabezeichenfolge ist nicht im richtigen Format - Doppeltyp
- 18. PowerShell Remoting hat nicht die richtigen Berechtigungen
- 19. document.getElementById() Wert nicht den Wert
- 20. FBSDKProfile currentProfile ist null, aber FBSDKAccessToken currentAccessToken hat den Wert
- 21. Holen richtigen Wert Checkbox form.serialize
- 22. Wie verwende ich den richtigen LWJGL DisplayMode im Vollbildmodus?
- 23. Überprüfen, ob die Variable den Wert '' hat
- 24. JSF commandButton Aktion gibt den richtigen Wert zurück, aber die Navigationsregel trifft nicht zu
- 25. nicht möglich, Formularvalidierung mit den richtigen Werten
- 26. Jenkins holt nicht den richtigen Gerrit Zweig
- 27. Oracle - Ausgabe nicht im richtigen Format
- 28. Kategorie ist nicht im richtigen Abschnitt platziert
- 29. Fehler: Panel1 existiert nicht im richtigen Kontext
- 30. Django Redirect den richtigen Weg?
Was meinen Sie mit "richtigen Wert" - ist es eine Wahl des Benutzers oder was? Vielleicht könnten Sie etwas Quellcode geben? Ich habe den Eindruck, dass es sich um ein nicht standardmäßiges Szenario handelt. –
Benutzerauswahl. Problem ist, es funktioniert, wenn ich eine neue Seite in einem neuen Projekt erstellen. Ich glaube, ich habe nur ein paar Hinweise darauf gesucht, was das verursachen kann. Es ist schwer für mich, den gesamten Quellcode einzuschließen, da eine Menge Vererbung vor sich geht, aber ich bin mir sicher, dass sich nichts an den Page/Control-Ereignissen anhängt, um den Viewstatus zu sabotieren. – muja