asp.net webforms - составные элементы управления, взаимодействующие с элементами управления страницы - PullRequest
0 голосов
/ 26 февраля 2012

Я пишу составной элемент управления на c # asp.net в качестве эксперимента и хотел бы, чтобы все экземпляры моего составного элемента управления взаимодействовали с одним внешним элементом управления. Возможно ли это?

Вещи, которые я пробовал:

вариант 1: проверить изнутри элемента управления, существует ли на странице внешний элемент управления, и добавить его, если его нет

вариант 2: идентификатор целевого элемента управления передается в составной элемент управления во время разработки, а затем используется this.Page.FindControl ()

Очевидно, что было бы очень приятно думать, что это будет так просто:)

Если я пытаюсь сделать это из метода CreateChildControls, this.Page.FindControl (target control) всегда возвращает ноль. Если я пытаюсь добавить элемент управления на страницу из этого метода, он выдает исключение:

"Невозможно изменить коллекцию элементов управления на этапах DataBind, Init, Load, PreRender или Unload."

Есть ли другой метод / событие, где я могу достичь этого?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2012

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

0 голосов
/ 26 февраля 2012

Вы можете создать несколько экземпляров в одной веб-форме с помощью интерфейса INamingContainer.Это, в основном, помогает предотвратить конфликты идентификаторов в том же пространстве имен.

Если вы хотите получить доступ к другому элементу управления, установите для него свойство, чтобы предоставить данные, которые вы хотите сделать общедоступными.

Создание составных элементов управления

...