60 votes

Accéder aux données parent dans un répéteur imbriqué, dans le HeaderTemplate

Question simple, pas sûr qu'il y ait une réponse simple!

Alors voici le code: (je l'ai beaucoup simplifié pour le rendre plus facile à lire)

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

Comment, dans le modèle d'en-tête, puis-je accéder au DataItem dans le répéteur parent?

93voto

Paul Points 3681

J'ai trouvé la réponse en fait:

Utilisation:

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

41voto

greenoldman Points 4575

La solution donnée par Paul n'a pas fonctionné pour moi, mais cela a fonctionné:

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

10voto

bobetko Points 1342

C'est un vieux fil, mais il semble approprié d'ajouter:

Dans mon cas, j'ai 2 contrôles ASPxGridView imbriqués (DevExpress) et Container.Parent.Parent qui ne fonctionnaient pas.

Pour accéder à l'élément de données du parent à partir de l'enfant, voici ce qui a fonctionné pour moi:

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

4voto

Chad Kuehn Points 240

Si je veux récupérer une propriété d'un répéteur parent, je le fais généralement:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X