Могу ли я избежать UpdatePanel, который убивает viewstate? - PullRequest
3 голосов
/ 29 июня 2009

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

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

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

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

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

Есть ли способ, с помощью которого я могу остановить действия UpdatePanel, по сути, обнулив свойства '.SelectedValue "?

1 Ответ

2 голосов
/ 29 июня 2009

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

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

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

РЕДАКТИРОВАТЬ: FYI, UpdatePanel не "убивает" ViewState. ViewState передается взад и вперед через механизм обновления UpdatePanel, который часто вызывает проблемы с производительностью, если ViewState слишком велик. То, что вы видите, - это кэш истории браузера, в котором не хранятся значения, которые были обновлены при последовательных обратных вызовах. Вышеуказанные методы должны помочь.

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