Когда DropDownList сохраняет значение из обратной передачи в обработчике событий SelectedIndexChanged - PullRequest
1 голос
/ 07 октября 2008

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

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

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

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

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

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

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

Я буду рад уточнить, если что-то из этого неясно.

Ответы [ 3 ]

2 голосов
/ 07 октября 2008

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

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

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

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

2 голосов
/ 07 октября 2008

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

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

0 голосов
/ 07 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...