Доступ к родительским данным во вложенном повторителе, в HeaderTemplate


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

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

<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 56

5 ответов:

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

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

<HeaderTemplate>
    <%# ((RepeaterItem)Container.Parent.Parent).DataItem %>
</HeaderTemplate>

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

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

Это старый поток, но кажется правильным добавить:

в моем случае у меня есть 2 вложенных элемента управления ASPxGridView (DevExpress) и контейнер.Родитель.Родитель не работал.

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

<%# DataBinder.Eval(Container.NamingContainer.NamingContainer, "DataItem.DbField")%>

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

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

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

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