2010-12-17 19 views
6

Tengo un repetidor anidado configurado pero el control secundario del repetidor no se reconoce en el código subyacente. Ni siquiera está siendo agregado al archivo de diseñador. Intenté esto en un aspx y en una página ascx pero ambos dan el mismo problema.Repetidor anidado no reconocido en el código detrás de

<asp:Repeater ID="RepeaterParent" runat="server"> 
    <ItemTemplate> 

     <asp:Repeater ID="RepeaterChild" runat="server"> 
     </asp:Repeater> 

    </ItemTemplate> 
</asp:Repeater> 

con esto en la página el código detrás sólo reconoce la RepeaterParent pero no RepeaterChild.

¿Alguien me puede ayudar aquí? ¡Muchas gracias!

Respuesta

10

Como cualquier otro control que se use dentro de un control de repetidor (o plantilla), debe recuperar el control usando FindControl.

Así, en su artículo controlador de eventos se unen los datos para el padre, que haría:

var childRepeater = RepeaterParent.FindControl("RepeaterChild") as Repeater; 
+0

+1 19 segundos más rápido :) –

4

El RepeaterChild será accesible cuando se utiliza FindControl("RepeaterChild") en el repetidor padres que pienso. No puedo recordar la sintaxis exacta.

También tenga en cuenta que el método FindControl también tomará el contexto del elemento actual del repetidor principal, como se repetirá el nombre que especifique. Los nombres de los contenedores hacen algo de trabajo en segundo plano para proporcionar nombres únicos, pero a veces es difícil hacer un seguimiento.

Cuestiones relacionadas