ASP.Net веб-форм, .NET 2.0
У меня дилемма. У меня есть страница aspx, которая имеет пользовательский элемент управления:
<def:CustomControl ID="customID" runat="server" />
Пользовательский элемент управления можно добавить несколько раз на страницу ASPX, если соблюдены определенные критерии:
<asp:Repeater runat="server" ID="options" OnItemDataBound="options_OnItemDataBound">
<HeaderTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
</HeaderTemplate>
<ItemTemplate>
<td>
<span>
<asp:Label runat="server" ID="optionName">
</asp:Label>
<asp:DropDownList runat="server" ID="optionValues" CssClass="PartOption" >
</asp:DropDownList>
</span>
</td>
</ItemTemplate>
<FooterTemplate>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
В коде страницы aspx я хотел добавить событие (OnSelectedItemChange) в выпадающий элемент управления, которого на самом деле нет на странице ASPX (пока). Тем не менее, когда я пытаюсь сделать что-то вроде следующего в коде:
foreach(Control eachControl in customID.Controls) {
if (eachControl.HasControls) {
Control DdControl = eachControl.FindControl("optionValues"); //always null
if (DdControl != null && DdControl is typeOf(DropDownList)) {
DdControl = DdControl as DropDownlist; //I might have the syntax wrong
//here, but you get the point.
//add event to control.
}
}
}
Но все, что есть у каждого элемента управления - это ретранслятор, и он показывает количество дочерних элементов как 0. Поэтому, когда он попадает в метод FindControl, он всегда возвращает ноль.
ВОПРОС
Так что я пытаюсь сделать, это добавить событие (OnSelectedItemChange) в элемент управления dropdownlist внутри повторителя (который является пользовательским элементом управления, который добавляется на страницу при соблюдении критериев). Когда в выпадающем списке делается выбор, я хочу, чтобы он вызвал метод Event.
Как я могу:
А) Найти способ добавить событие, если на странице существует элемент управления выпадающего списка?
OR
B) Способ вызова метода из кода и передачи выбора из всех раскрывающихся списков (поскольку пользовательский элемент управления может быть добавлен более одного раза, создавая несколько раскрывающихся списков?
ПРИМЕЧАНИЕ У меня нет кода передо мной, поэтому, если у меня есть что-то синтаксически неправильное, пожалуйста, не обращайте внимания. Я также знаю, что идентификаторы уникальны, поэтому это также считается проблемой с моей логикой. Когда он отображает их, идентификаторы могут быть искажены соглашением об именах asp, которое, как я полагаю, я должен найти способ обойти.