ASP.Net Ajax Разборный удлинитель ViewState Проблема

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

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

Уф.... есть фон для проблемы.

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

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

1 ответ

Решение

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

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

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

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

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

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

Другие вопросы по тегам