ASP.Net Ajax Разборный удлинитель ViewState Проблема - PullRequest
1 голос
/ 31 июля 2009

В настоящее время я работаю над усовершенствованным веб-приложением, которое содержит несколько страниц с динамической визуализацией. Страницы являются стандартными страницами, которые содержат заполнитель, в который основное содержимое отображается из комбинации Xml и Xslt.

Недавно я пытался добавить разборный модуль ASP.Net Ajax Toolkit, позволяющий сворачивать и расширять панели, которые отображаются динамически. Я добавил разметку расширителя в наш основной шаблон xslt, и все в порядке. Ну, все в порядке, пока пост не состоится, и панели не вернутся в первоначальное состояние. Так, например, если я загружаю страницу со свернутыми панелями, то после обратной передачи странице не удается сбросить все открытые панели. Проблема вызвана тем, что я сохраняю динамическое содержимое в самом viewstate, и как только страница загружается просто получить его из состояния просмотра, а не заново визуализировать Xml.

Уф .... есть причина проблемы.

Теперь главный вопрос. Как на земле вы можете взаимодействовать с расширителем в Javascript. Я потратил несколько дней на то, чтобы убедиться, что я могу кешировать состояние на стороне клиента переменной страницы, а затем повторно применить обратную передачу состояния. Однако, как представляется, нет документации или знаний о том, как это сделать. Лучшее, что я нашел, - это какой-то очень простой javascript, который позволит вам зарегистрировать пару событий, чтобы поймать, когда панель развернута или свернута.

Все, что я хочу сделать, это взаимодействовать и кэшировать каждое состояние панелей. Кто-нибудь может предложить что-нибудь?

1 Ответ

0 голосов
/ 06 августа 2009

ОК, на тот случай, если кому-то еще нужно добиться подобного, теперь у меня все работает.

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

Поэтому я решил, что лучшим способом было бы программно добавить пару скрытых полей (ASP.Net HiddenField) на страницу в событии Page_Load () и добавить имена каждого расширителя в виде строки с разделителями в одном поле, а затем поле на расширитель для хранения состояния расширителей. Когда страница отправляет обратно, значение каждого скрытого поля расширителей извлекается из объекта Request.Form (ключом которого является идентификатор скрытых полей), в противном случае, если это начальная загрузка, просто обработайте значение по умолчанию.

Затем я просто создал простой клиентский скрипт, который обрабатывал события onExpand и onCollapse и обновлял значение скрытого поля определенных расширителей.

В событии pageLoad клиентского скрипта я просто устанавливаю состояние entenders на основе значения его скрытых полей.

Просто на самом деле .... надо было подумать об этом, чтобы начать с!

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