2008-09-07 21 views
12

¿Cómo configuro una propiedad de un control de usuario en ListViewLayoutTemplate desde el código subyacente?¿Cómo acceder a los controles en layouttemplate de listview?

<asp:ListView ...> 
<LayoutTemplate> 
<myprefix:MyControl id="myControl" ... /> 
</LayoutTemplate> 
... 
</asp:ListView> 

Quiero hacer esto:

myControl.SomeProperty = somevalue; 

Tenga en cuenta que mi control no está en ItemTemplate, es en LayoutTemplate, por lo que no existe para todos los artículos, no existe más que una sola vez. Así que debería poder acceder a ella una vez, no para cada elemento vinculado a datos.

Respuesta

12

establecer una propiedad de un control que está dentro de la LayoutTemplate, sólo tiene que utilizar el método FindControl en el control ListView.

var control = (MyControl)myListView.FindControl("myControlId"); 
1

Utilice el método FindControl en cada ListViewItem.

var control = (MyControl)Item.FindControl("yourControlId"); 
1

Esto ha sido respondida en esta pregunta desbordamiento de pila:
Access a control inside a the LayoutTemplate of a ListView

véase el comentario sobre la respuesta aceptada por tanathos.

Sé que esto se solicitó hace más de un año, pero es uno de los primeros resultados para el término de búsqueda que solía obtener aquí, así que quería dejar la respuesta para cualquier persona que se tropezó con ella.

0

Se crea el diseño y se desencadena un evento LayoutCreated que dice que el diseño se ha creado en el sistema.

Luego, puede usar listview.FindControl para obtener una referencia a ese control.

18
var control = (MyControl)myListView.FindControl("myControlId"); 

Esto funcionará pero asegúrese de que lo hace después de que el aprieto de datos o la LayoutTemplate no has sido creado de este modo lanzando un error.

Cuestiones relacionadas