Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > NamingContainer'ы


Автор: Bogdan1024 30.6.2008, 12:31
Допустим, NamingContainer c1 содержит NamingContainer'ы c2 и c3. 
Могут ли совпадать ID в контейнерах c2 и c3?
Если могут, то допустим на одной странице есть текстбоксы с ID="TextBox1", содержащиеся в разных контейнерах. Если я буду обращаться по этому айдишнику, то к какому текстбоксу я получу доступ?

Автор: PashaPash 30.6.2008, 15:12
Цитата(Bogdan1024 @  30.6.2008,  12:31 Найти цитируемый пост)
Если я буду обращаться по этому айдишнику, то к какому текстбоксу я получу доступ? 
Все зависит от того, как именно и откуда будешь обращаться.

Автор: Bogdan1024 30.6.2008, 16:51
Например, через c1.FindControl

Автор: PashaPash 30.6.2008, 20:28
Bogdan1024, FindControl не заглядывает во вложенные INamingContainer'ы. Т.е. он спокойно вернет null.

Автор: Idsa 2.7.2008, 16:28
Первый раз слышу о такой вещи, как NamingContainer. Что-то MSDN меня не очень вдохновил. Подскажите вкратце, что это и с чем его едят (ссылки приветствуются smile ).

Автор: Bogdan1024 5.7.2008, 22:19
Чтобы создать контрол, испольщующий шаблоны, нужно реализовать в нём INamingContainer.
Если твой контрол использует датабиндинг, то тебе нужно его реализовать тоже.
У контролов, содержащихся в коллекции Controls котрола, в котором реализован INamingContainer будут ClientID == КонтролРодительского_КонтролID (и UniqueID будут тоже похожи на это). Так бы не добавлялся бы префикс.
Ну ещё ты можешь сам назначить контролу, который ты собираешься добавить в коллекцию контролов родительского контрола, айдишник и не бояться что у тебя уже есть контрол с таким айдишником где-нибудь ещё на форме или в другом контроле. 
Кстати, в UserControl этот интерфейс реализован.

Автор: Idsa 6.7.2008, 09:32
Bogdan1024, спасибо. +1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)