2009-08-23 1 views
4

Если для параметра asp.net DropDownList установлено значение EnableViewState = false, DropDownList.SelectedItem возвращает значение null.«EnableViewState = false» asp.net DropDownList

Какую технику я могу использовать для получения SelectedItem этого DropDownList, сохраняя этот EnableViewState = false?

ответ

7
Request.Form[yourDropDownList.UniqueID] 

UniqueID возвращает "ctl00 $ ContentMain $ ddlCountry", где, как ClientID возвращает "ctl00_ContentMain_ddlCountry"

UniqueID вставляется в имя формы HTML, который используется в форме имя постбэк.

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

Я думаю, что проблема заключается в том, что вы привязки данных выпадающий список вручную в коде позади файла. Это может помочь переместить привязку данных с Page_Load() до Page_Init().

Но, по моему мнению, лучшим решением было бы использовать ObjectDataSource, чтобы заполнить значения вашего DropDownList. Таким образом, вы уверены, что вы загружаете значения в правильное время в жизненном цикле страницы.

+0

Ян, у меня похожая ситуация, и почему-то мой RadComboBox теряет свою ценность при обратной передаче. Я использую ObjectDataSource и всегда думал, что он заботится о привязке в правильной точке во время жизненного цикла страницы, поэтому я не уверен, почему это происходит. Есть предположения? – Jacques

+0

Извините, Жак, я не могу помочь вам с этим. Это сделало бы быстрый тест с помощью обычного DropDownList. Если это сработает, проблема может быть внутри элемента управления. В противном случае попробуйте попросить здесь о переполнении стека. :) –

+0

вы просто спасли мне часы работы. благодаря ! – buzibuzi

1

Здесь было мое решение с использованием VS2010. 1. Установите EnableViewState на значение false. 2. Привяжите выпадающий список к sqldataadapter.

До: После установки EnableViewState на false, мне пришлось перезагрузить список при каждой обратной передаче. Это сработало. Однако в первый раз, когда значение было выбрано из списка, событие SelectedIndexChanged запущено, но selectecitem.Value не изменился (он остался при «0»). Второй раз, когда значение было выбрано из списка, selectecitem.Value было правильным.