ASP.NET 2.0 Веб-формы
Итак, как вы можете пройти через все элементы управления в пользовательском элементе управления, найти определенный тип элемента управления и добавить к нему событие?
У меня естьПодобный вопрос Как добавить событие в элемент управления ASP.NET при загрузке страницы? , которое касается добавления события, но это не так, если я хотел найти элемент управления.
СЦЕНАРИЙ
Элемент управления представляет собой пользовательский элемент управления:
<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>
Объявление пользовательского элемента управления на пользовательском элементе управления:
<td><def:CustomControl id="somePartOptions" runat="server"></td>
В кодеЗа пользовательским элементом управления я попробовал следующее в событии Page_Load:
foreach(Control control in partOptions.Controls) {
FindDropDownControl(control);
}
protected void FindDropDownControl(Control controlContainer) {
bool isRepeater = false;
if (controlContainer is Repeater) {
isRepeater = true;
}
if (controlContainer.HasControls()) {
foreach (Control subControl in controlContainer.Controls) {
FindDropDownControl(subControl);
}
}
}
Однако логический флаг всегда ложен.Так что я делаю?В конце концов я хочу найти элемент управления выпадающего списка внутри itemTemplate повторителя, но даже не могу найти повторитель.
спасибо,