2009-07-30 5 views
1

В настоящее время я работаю над расширенным веб-приложением, которое содержит несколько страниц с динамическим отображением. Страницы являются стандартными страницами, в которых содержится место, в которое основное содержимое отображается из комбинации Xml и Xslt.ASP.Net Ajax Collapsible Extender ViewState Issue

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

Phew .... есть проблема.

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

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

ответ

0

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

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

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

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

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

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

Смежные вопросы