asp.net - Accediendo a los datos principales en el repetidor anidado, en HeaderTemplate
nested-repeater (4)
Encontré la respuesta en realidad:
Utilizar:
<HeaderTemplate>
<%# ((RepeaterItem)Container.Parent.Parent).DataItem %>
</HeaderTemplate>
¡Pregunta simple, no estoy seguro de que haya una respuesta simple!
Así que aquí está el código: (Lo he simplificado mucho para que sea más fácil de leer)
<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>
¿Cómo, en HeaderTemplate, puedo acceder al DataItem en el repetidor padre?
La solución dada por Pablo no funcionó para mí, pero esto hizo:
<%# DataBinder.Eval(Container.Parent.Parent, "DataItem.YourProperty")%>
Este es un hilo viejo, pero parece apropiado agregar:
En mi caso tengo 2 controles anidados ASPxGridView (DevExpress) y Container.Parent.Parent no funcionó.
Para acceder al elemento de datos del padre desde el niño, esto es lo que funcionó para mí:
<%# DataBinder.Eval(Container.NamingContainer.NamingContainer, "DataItem.DbField")%>
Si quiero recuperar una propiedad de un repetidor padre, generalmente hago esto:
<%# DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "ThePropertyName")%>