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

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

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

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

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

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

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

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

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

2 ответа

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

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

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

Построить составные элементы управления

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