2009-04-07 9 views
2

У меня есть пользовательская веб-часть с панелями Аккордеона из набора инструментов AJAX Control Toolkit как дети, которые используются для визуализации иерархии карт сайта. Каждая панель включает в себя div с текстовым вводом и 3 кнопки LinkButtons, используемые для редактирования данных sitemap: «Добавить ребенка», «Обновить» и «Удалить».Обновление динамического элемента управления

В настоящее время все эти элементы управления создаются в переопределенном методе CreateChildControls.

При нажатии кнопки «Добавить ребенка» LinkButton запускается обработчик событий, а новый узел добавляется в файл Sitemap. Когда завершение обратной передачи завершается, элемент управления должен повторно выполнить рендеринг с новым, пустым узлом в иерархии, но это не так. После нового запроса GET появляется новый узел. Прочитав некоторое время, я подумал, что моя проблема в том, что я создавал свои дочерние элементы управления слишком рано, потому что CreateChildControls вызывается перед запуском контрольных событий, поэтому я переместил этот бит в метод OnPreRender. Но теперь события Control не срабатывают, потому что я слишком поздно подключаю их к жизненному циклу страницы (см. Здесь: Custom Control Events Not Firing).

Мой вопрос заключается в следующем: как я могу гарантировать, что пользовательский элемент управления отображает результаты своих дочерних обработчиков событий дочернего элемента?

Как в стороне, имеет ли значение, что я делаю это в веб-части, а не в пользовательском контроле сервера (например, является ли жизненный цикл другим)?

ответ

1

Вы можете вызвать EnsureChildControls в OnInit страницы. Это обеспечит воссоздание дочерних элементов управления до того, как будут обработаны какие-либо события.

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