2009-08-23 7 views
4

Wenn eine DropTownLists von asp.net auf EnableViewState = false festgelegt ist, gibt DropDownList.SelectedItem null zurück.'EnableViewState = false' einer asp.net DropDownList

Welche Technik kann ich dann verwenden, um das SelectedItem dieser DropDownList zu erhalten, während EnableViewState = false bleibt?

Antwort

7
Request.Form[yourDropDownList.UniqueID] 

UniqueID gibt "ctl00 $ ContentMain $ ddlCountry", wo als ClientID returns "ctl00_ContentMain_ddlCountry"

Die UniqueID auf den Namen des HTML-Formular eingefügt wird, die in der Postbacks Formularname verwendet wird.

2
string selectedValue = Request.Form["MyDropDownList"]; 
4

Meine Vermutung ist, dass das Problem ist, dass Sie Datenbindung die Dropdown-Liste manuell in den Code hinter Datei. Es könnte helfen, Ihre Datenbindung von Page_Load() zu Page_Init() zu verschieben.

Aber meiner Meinung nach wäre eine bessere Lösung, eine ObjectDataSource zu verwenden, um die Werte Ihrer DropDownList auszufüllen. Auf diese Weise sind Sie sicher, dass Sie die Werte im richtigen Seitenzyklus laden.

+0

Jan, ich habe eine ähnliche Situation und aus irgendeinem Grund verliert meine RadComboBox ihren Wert beim Postback. Ich verwende eine ObjectDataSource und dachte immer, dass sie sich an der richtigen Stelle während des Seitenlebenszyklus um die Bindung kümmert, weshalb ich mir nicht sicher bin, warum dies geschieht. Irgendwelche Gedanken? – Jacques

+0

Sorry, Jacques, ich kann dir nicht helfen. Es würde einen schnellen Test mit einer regulären DropDownList machen. Wenn das funktioniert, könnte das Problem in der Kontrolle sein. Andernfalls versuchen Sie es hier auf Stack Overflow. :) –

+0

hast du mir gerade Stunden Arbeit gerettet. Vielen Dank ! – buzibuzi

1

Hier war meine Lösung mit VS2010. 1. Setzen Sie EnableViewState auf false. 2. Binden Sie die Dropdown-Listbox an einen sqldata-Adapter.

Vorher: Nachdem ich EnableViewState auf false gesetzt hatte, musste ich die Listbox bei jedem Postback neu laden. Das hat funktioniert. Beim allerersten Mal, als ein Wert aus der Liste ausgewählt wurde, wurde das SelectedIndexChanged-Ereignis ausgelöst, aber der selectecitem.Value änderte sich nicht (er blieb bei "0"). Beim zweiten Mal, als ein Wert aus der Liste ausgewählt wurde, war der selectecitem.Value korrekt.

Verwandte Themen