Нахождение элемента управления ascx внутри aspx - PullRequest
1 голос
/ 02 декабря 2011

Я обнаружил выпадающий список ascxcontrol на моем aspx следующим образом.

Dim cp As ContentPlaceHolder = DirectCast(Page.Form.FindControl("ContentPlaceHolder1"), ContentPlaceHolder)
Dim ascx As UserControl = DirectCast(cp.FindControl("drpType"), UserControl)
Dim drpType As DropDownList = DirectCast(ascx.FindControl("drpType"), DropDownList)

Есть ли более быстрый способ без доступа ко всем элементам на странице?

Ответы [ 3 ]

0 голосов
/ 02 декабря 2011

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

0 голосов
/ 02 декабря 2011

Зависит от того, что вы пытаетесь сделать.

Без большого контекста я могу только предположить, что вы либо получаете, либо устанавливаете значение раскрывающегося списка.

Я бы не использовал подход, который вы используете. Он вводит элемент реализации специфической связи.

Вам было бы гораздо лучше раскрыть все, что вам нужно получить / установить через свойство, которое вы можете вызвать со страницы .aspx.

Однако, в ответ на ваш вопрос, если вы собираетесь ссылаться на выпадающий список со страницы .aspx, вам придется использовать FindControl.

0 голосов
/ 02 декабря 2011

Если вы знаете, какое наименование содержит элемент управления, вы можете перейти

ucNamingContainerControl.FindControl(controlId)

Это, по крайней мере, ограничит этот раздел страницы.

В противном случае, единственное, о чем я могу думать, - это если вы получаете доступ к предопределенному набору элементов управления - поместите их в коллекцию Dictionary и используйте метод Find, чтобы выбрать их. Может быть более быстрый поиск, но может показаться немного неуклюжим на странице.

...