2009-06-29 2 views
3

I страница выбора, которая имеет сетку, которая представляет пользователю список элементов данных, которые они могут щелкнуть, чтобы «просверлить» - перенаправление их на страницу обслуживания данных.Могу ли я избежать обновления UpdatePanel, который убивает viewstate?

Поскольку список может затянуться, у нас есть серия флажков и раскрывающихся списков вверху, которые действуют как фильтры.

Мы только что внедрили UpdatePanel с UpdatePanelAnimationExtender, так что, когда страница совершила длительные поездки обратно в базу данных, они получат приятную «Обработку ...».

Проблема в том, что это, по-видимому, нарушает представление в раскрывающихся списках и флажках. Теперь, когда они перейдут на «страницу подробностей» и нажмите кнопку «НАЗАД», чтобы вернуться на страницу «Выбор», выбранные значения в полях и выпадающих списках вернутся к исходным значениям по умолчанию. Списки все еще заполнены, но они «забыли», что они имели, когда пользователь нажал на страницу обслуживания данных.

Я достал код .aspx для UpdatePanel, и анимация была расширена и протестирована, и все сработало отлично. Итак, очевидно, UpdatePanel и/или AnimationExtender не играют хорошо с представлением.

Есть ли способ, я могу остановить действия в UpdatePanel от, по сути, обнуления».SelectedValue» свойства?

ответ

2

Сначала я хотел снять свой „фильтрации“ управления из UpdatePanel. Если предположить, что данные для эти элементы управления оцениваются в Page_Load, их не нужно обновлять каждый раз, когда фильтр применяется к GridView. Обновляется только GridView, поэтому вполне вероятно, что это единственный элемент управления, который должен содержаться в UpdatePanel.

Каждый элемент управления фильтрацией может быть добавлен в качестве триггера для обновления UpdatePanel путем объявления их в разделе элемента управления UpdatePanel. Или, если процесс фильтрации вызывается кнопкой «отправить», которая будет элементом управления, который будет объявлен в разделе. Это должно сохранить значения элементов управления фильтрацией в кеше браузера.

Вы также можете попробовать Nikhil Kothari's UpdateHistory control (у Nikhil есть отличный блог, кстати), который сохранит содержимое UpdatePanel в качестве записей истории в списке истории браузера.

EDIT: FYI, UpdatePanel не «убивает» ViewState. ViewState передается взад и вперед через механизм обновления UpdatePanel, что часто приводит к проблемам с производительностью, если ViewState является чрезмерно большим. То, что вы видите, это кеш-память браузера, не сохраняющая значения, которые были обновлены при последовательных обратных вызовах. Вышеупомянутые методы должны помочь.

+0

Ну, мне удалось использовать вашу технику (получение элементов управления из UpdatePanel и добавление их в качестве элементов AsyncPostBackTrigger в коллекции триггеров), чтобы не стирать выбранные значения в раскрывающихся списках. К сожалению, когда я нажимаю на спусковой механизм, хотя в раскрывающихся списках все еще есть свои члены, и выбранный элемент все еще отображается в части «текстовое поле», «SelectedIndexValue» вернется к 0, и фильтры подпрограммы дисплея работают неправильно. – David

+0

... и выясняется, что в очистке кода и повторном заполнении выпадающих списков было что-то, поэтому причина, по которой выбранный индекс был сброшен. Теперь, когда дело доходит до проблемы с программным обеспечением, я отмечаю, что это «ответили». – David

+0

Рад, что я помогу Дэвиду. Благодарю. –