2009-03-13 8 views
0

Я пытаюсь создать элемент управления (MyControl), который делает вещи другим элементам управления на странице, на которой он включен. У него есть имущество:Как передать другой элемент управления в пользовательский элемент управления ASP.NET в качестве параметра в его объявлении с использованием идентификатора другого элемента управления?

public property System.Web.UI.Control SomeOtherControl; 

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

MyControl.SomeOtherControl = TheOtherControl; 

Вместо того, чтобы сделать это на отделенном код каждой страницы, которая использует MyControl, я хочу сделать просто сделать это на странице ASPX:

<xyz:MyControl SomeOtherControl="TheOtherControlsID" /> 

для того, чтобы сделать это, я попытался с помощью метода Page.FindControl() на идентификационной строке, чтобы найти указываемый контроль, когда MyControl инициализирует, но он ищет только элементы управления верхнего уровня данной страницы. Я мог бы написать свой рекурсивный FindControl(), но я считаю, что должен быть лучший способ сделать это, и я беспокоюсь о производительности чего-то подобного. Есть идеи?

ответ

1

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