Доступ к родительским данным во вложенном репитере в HeaderTemplate - PullRequest
58 голосов
/ 11 сентября 2009

Простой вопрос, не уверен, что есть простой ответ!

Итак, вот код: (я сильно упростил его, чтобы его было легче читать)

<asp:Repeater runat="server>
    <ItemTemplate>
        <asp:Repeater runat="server">
            <HeaderTemplate>
                <h1>My header here for: <%# OuterContainer.DataItem.MyItemName %> </h1>
            </HeaderTemplate>
            <ItemTemplate>
                My items code here
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

Как, в HeaderTemplate - я могу получить доступ к DataItem в родительском повторителе?

Ответы [ 5 ]

90 голосов
/ 11 сентября 2009

Я нашел ответ на самом деле:

Использование:

<HeaderTemplate>
    <%# ((RepeaterItem)Container.Parent.Parent).DataItem %>
</HeaderTemplate>
40 голосов
/ 14 января 2012

Решение, данное Полом, не сработало для меня, но это сработало:

<%# DataBinder.Eval(Container.Parent.Parent, "DataItem.YourProperty")%> 
9 голосов
/ 16 мая 2012

Это старая ветка, но, кажется, стоит добавить:

В моем случае у меня есть 2 вложенных элемента управления ASPxGridView (DevExpress), и Container.Parent.Parent не работает.

Чтобы получить доступ к элементу данных родителя от child, вот что сработало для меня:

<%# DataBinder.Eval(Container.NamingContainer.NamingContainer, "DataItem.DbField")%>
4 голосов
/ 11 июня 2014

Если я хочу получить свойство родительского повторителя, я обычно делаю это:

<%# DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "ThePropertyName")%>
0 голосов
/ 02 сентября 2018

Я использовал, как показано ниже. Два повторителя действуют как родительский и дочерний. Ниже показано, как я получаю родительское значение столбца идентификатора внутри дочернего повторителя.

<%# DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "ID") %>
...