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?
J'ai trouvé la réponse en fait:
Utilisation:
<HeaderTemplate>
<%# ((RepeaterItem)Container.Parent.Parent).DataItem %>
</HeaderTemplate>
La solution donnée par Paul n'a pas fonctionné pour moi, mais cela a fonctionné:
<%# DataBinder.Eval(Container.Parent.Parent, "DataItem.YourProperty")%>
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 fonctionnent 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")%>
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")%>
J'ai utilisé comme ci-dessous . Deux répéteurs agissent en tant que parent et enfant.
<%# DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "ID") %>