2010-12-09 6 views
2

Есть ли простой способ найти элемент управления в ASP.NET по id (в любом вложенном контейнере)? Помимо перемещения всего дерева управления.Как найти элемент управления на странице по id

Что-то как в этом примере:

TextBox tb = new TextBox() { ID = "textboxId"}; 
panel3.Controls.Add(tb); 

А в другой метод/класс:

TextBox nameTextbox = MethodToFindControl("textboxId") as TextBox; 

ответ

3

Нет ... Вы должны пройти все элементы управления дерева до тех пор, пока не найдете управления, то вы перестанете обходе , ваш метод (MethodToFindControl) должен быть рекурсивным методом, который принимает два аргумента: контейнер корня (большую часть времени его страницу) и идентификатор элемента управления, который нужно искать.

+1

См. Http://www.codinghorror.com/blog/2005/06/recursive-pagefindcontrol.html для примера функции – Lareau 2010-12-09 02:29:55

+0

Спасибо, но я знаю, как перемещаться по дереву (как упоминалось в вопросе - я поиск другого метода). – 2010-12-09 10:04:52

5

Если я правильно понимаю ваш вопрос, вы можете использовать метод FindControl следующим образом:

TextBox nameTextbox = (TextBox) panel3.FindControl ("textboxId");

1

Если вы не можете найти элемент управления, используя findcontrol, объявите соответствующий td/panel в качестве серверного элемента управления, а затем вы сможете легко найти необходимый элемент управления в элементе td или панели.

DirectCast(tdMultiCnstrTypCode.FindControl("BBIMultiConsCode" & cnt + 1), DropDownList) 

Этот подход проще, чем перемещение по всем элементам управления и дочерним элементам управления.