Foros del Web » Programación para mayores de 30 ;) » .NET »

findControl en Repeater anidado

Estas en el tema de findControl en Repeater anidado en el foro de .NET en Foros del Web. Hola ! :) Para acceder a los controles de un repeater a través del evento itemDataBound, usamos e.Item.FindControl("nombreControl") , bien esto en repeaters "solitarios" o ...
  #1 (permalink)  
Antiguo 15/11/2005, 11:25
 
Fecha de Ingreso: septiembre-2004
Mensajes: 17
Antigüedad: 19 años, 7 meses
Puntos: 0
findControl en Repeater anidado

Hola ! :)

Para acceder a los controles de un repeater a través del evento itemDataBound, usamos e.Item.FindControl("nombreControl"), bien esto en repeaters "solitarios" o de primer nivel funciona de perillas :)

Ahora si anido dos repeaters, en el primero, puedo manejar los controles a través del metodo findControl("nombreControl") bien, pero cuando quiero manejar los controles del repeater anidado, esto no funciona.

Creo que es devido a los ID de estos controles son cambiados por el primer repeater y asi garantizar ID_unicos, y entonces se lia la pajarera y no hay manera de que ni en el propio evento itemDataBind del segundo repeater sea capaz de encontrar sus propios controles (cosa que no entiendo pq) ... pero bueno ...

así que ando experimentando con la propiedad parent ... pero esa no creo que sea la solución ... así que seguramente tenga que acabar haciendo algún tipo de recorrido manual sobre las colecciones de controles y elementos ... ... ... pero viendo que ni el propio repeater se aclara con sus controles, no se ni por donde cojerlo manualmente ...

Alguien puede darme una luz ...
  #2 (permalink)  
Antiguo 15/11/2005, 13:31
 
Fecha de Ingreso: septiembre-2004
Mensajes: 17
Antigüedad: 19 años, 7 meses
Puntos: 0
Estoy pensando que en vez de controlar el evento itemDataBound del repeater anidado, monto un recorrido sobre los controles, pero desde el itemDataBound del repeater del primer nivel, podria tener acceso al repeater anidado como un control más y desde hay recorrerlo. De ese modo tendría la misma funcionalidad que con el itemDataBound ....

Pero sigo sin entender pq el repeater anidado no es capaz de encapsular sus controles, si tiene todas las características para poder hacerlo, colecciones, serialización y propiedades que expresamente podrian controlarlo. Non capiche niente !!!

...
  #3 (permalink)  
Antiguo 15/11/2005, 13:33
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Por qué no muestras el código que tienes?

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #4 (permalink)  
Antiguo 14/01/2010, 04:05
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: findControl en Repeater anidado

Buenas , ya se que hace mucho de este post, pero de todas formas pongo la solución por si alguien la esa buscando y da con este post.

Como bien dice el amigo , accede a traves del evento ItemDataBound del repeater para acceder a los elementos del primer repeater, pues la solucion es usar otro para el segundo repeater...

ejemplo:

<asp:repeater id="rptuno" runat="server" OnItemDataBound="RptUno_ItemDataBound">
<ItemTemplate>
<asp:repeater id="rptDos" runat="server" OnItemDataBound="RptDos_ItemDataBound">
<ItemTemplate>
<asp:RadioButton id="rbcontol" runat="server" />
</ItemTemplate>
</asp:repeater>
</ItemTemplate>
</asp:repeater>

Bien si queremos acceder al radioButton del segundo repeater tendriamos que hacer lo siguiente.

-Primero añadimos un origen de datos al segundo repeater.

protected void RptrLinks_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

((Repeater)e.Item.FindControl("rptDos")).DataSourc e = ListaDatos;
((Repeater)e.Item.FindControl("rptDos")).DataBind( );
}
}

-Ahora Accedemos al RadioButton ...

protected void RptDos_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
((RadioButton)e.Item.FindControl("rbcontol")).Chec ked = true;
}

}

Bueno espero que la solución sirva a mas de uno.

Un saludo

Última edición por Hiunkeru; 14/01/2010 a las 04:10 Razón: olvidada una cosa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:05.