2008-10-07 8 views
1

Уточнить для всей этой проблемы абсолютно не связано с восстановлением элементов управления, и значение не остается начальным значением после привязки.Когда DropDownList сохраняет значение от обратной передачи в обработчике событий SelectedIndexChanged

У меня есть DropDownList на странице aspx, которая используется в нескольких проектах.

В течение жизненного цикла страницы SelectedValue изменяется перед обработкой события SelectedIndexChanged.

В одном проекте, когда код достигает обработчика событий, SelectedValue возвращается к тому, что было отправлено клиентом, а в другом - новом SelectedValue.

Viewstate включен в обоих случаях, элемент управления не отскакивает и следует за тем же самым потоком из всего, что я могу собрать.

Элемент управления не инициализируется снова, я проверил это полностью и не сохранил начальное значение, а значение, указанное в коде.

Мне действительно нужно опубликованное значение в точке обработчика событий, как это происходит в первом проекте, но не понимает, почему оно будет меняться до опубликованного значения и как воспроизвести это поведение во втором проекте.

Буду рад прояснить ситуацию, если это неясно.

ответ

2

Возможно, некоторая инициализация выполняется дважды в событии on_load, потому что вы не проверяете, что страница отправлена ​​с помощью IsPostBack в тесте?

Это точно происходит с одним из моих коллег десять минут назад :-)

+0

элемент управления не связан снова, и логика не относится к обратной передаче – YonahW

0

я обычно видеть такое поведение, когда я забыл проверить IsPostBack где-то. Страница загрузит все исходные данные перед тем, как перейти к обработчику события SelectedIndexChanged.

2

Многие люди ошибочно полагают, что DropDownLists должны иметь ViewState для сохранения выбранного значения. У меня почти никогда не было EnableViewState установлено значение true в DropDownLists, потому что они отлично работают в форме с опубликованными значениями. (И установив его истинный на элемент управления DataBinding вызовет длинный ViewState)

Опубликованной стоимости (выбранный пункт в выпадающем списке) загружаются из поста-параметров после OnInit на странице, так что если вы связать данные в раскрывающемся списке OnInit он будет работать нормально.

Если вы связываете в OnLoad, выбранное значение будет отменено.

Возможно, вы привязываете данные в неправильном случае, чтобы выбранное значение было переопределено вызовом DataBind в выпадающем меню?

+0

У меня создалось впечатление, что viewstate не нужен, но он есть на данный момент. Хотя я меняю SelectedValue, я не перевязываю элемент управления, и код в обоих проектах точно такой же, один из которых не теряет значение. – YonahW