У меня есть небольшой код, который определяет, должен ли элемент управления (в репитере) быть видимым или нет, и я хочу вызвать это на Page_Load, но я не могу получить элементы управления внутри репитера.

<asp:Repeater ID="repreat" runat="server" >
        <HeaderTemplate>
            <asp:PlaceHolder runat="server" ID="thActivePrimary">Blah</asp:PlaceHolder>
            <asp:PlaceHolder runat="server" ID="PlaceHolder1">Blah</asp:PlaceHolder>
        </HeaderTemplate>
        <ItemTemplate>
            <asp:PlaceHolder runat="server" ID="trActivePrimary">Blah</asp:PlaceHolder>
            <asp:PlaceHolder runat="server" ID="thActivePrimary2">Blah</asp:PlaceHolder>
        </ItemTemplate>              
</asp:Repeater>    

Repreat.Controls всегда пуст.

Как мне этого добиться?

4
James Hughes 19 Июн 2009 в 15:18

2 ответа

Лучший ответ

Элементы управления не создаются при загрузке страницы, они создаются при вызове привязки данных. Если вы хотите получить доступ к каждому элементу по мере их создания, посмотрите на событие DataBound ретранслятора.

Или привяжите видимый атрибут к вашему источнику данных

1
Mesh 19 Июн 2009 в 15:23
    foreach (RepeaterItem ri in repeat.Items)
         ri.FindControl("thActivePrimary").Visible = false;

Это должно работать

3
Fiur 19 Июн 2009 в 15:25