2011-03-31 11 views
5

Tengo un <asp:ListView> pero por alguna razón la sección LayoutTemplate no se muestra cuando la lista está vacía, aunque se muestra la sección <EmptyDataTemplate>. LayoutTemplate contiene los encabezados de la tabla y quiero mostrar una tabla vacía cuando no hay elementos en el origen de datos, no solo el contenido de EmptyDataTemplate.ListView LayoutTemplate no se muestra cuando vacío asp.net

Si no hay otra opción, copiaré el LayoutTemplate en EmptyDataTemplate, pero parece estúpido tener que hacer esto. Ideas?

Respuesta

12

Desde el MSDN:

La plantilla vacía aparece en un control ListView cuando la fuente de datos que está enlazado al control no lo hace contiene ningún registro y la propiedad InsertItemPosition se establece en InsertItemPosition.None. Se representa la plantilla en lugar de la plantilla LayoutTemplate. Si la propiedad InsertItemPosition se establece en un valor distinto de InsertItemPosition.None, la plantilla EmptyDataTemplate no es prestado.

las palabras clave aquí son "... la plantilla se representa lugar de la plantilla ... LayoutTemplate"

Así que creo, tiene que copiar el LayoutTemplate en la plantilla EmptyDataTemplate.

+6

De hecho. Para las tablas que muestran sus filas en ListViews, simplemente pongo las etiquetas de encabezado fuera de ListView, y LayoutTemplate solo contiene el ItemPlaceholder ahora. – Graham

0

También puede ponerlo en un Control de usuario (.acsx). Luego, inclúyalo en la plantilla de diseño y en la plantilla vacía ... y se sentirá menos estúpido ya que aún puede administrarlo en un solo lugar. Sé cómo te sientes al copiar el mismo código ... parece algo que haría un niño de 5º grado. Usar un control es un enfoque más adulto.

Cuestiones relacionadas