Repeater, ListView, DataList, DataGrid, GridView … ¿Qué elegir?

Tantos controles diferentes para elegir! ¿Cuáles son las mejores prácticas para determinar qué control usar para mostrar datos en ASP.NET?

Se trata de lo que intentas lograr

  • Gridview: de diseño limitado, funciona como una tabla html. Más en funciones integradas como editar / actualizar, página, ordenar. Un montón de sobrecarga.

  • DataGrid: versión anterior de Gridview. Una vista de cuadrícula es una superred de datos.

  • Datalist: versión más personalizable de Gridview. También tiene algunos gastos generales. Más trabajo manual ya que tienes que diseñarlo tú mismo.

  • ListView – el nuevo Datalist :). Casi un híbrido de datalist y gridview donde puedes usar paginación y construir en Gridview como funcionalidad, pero tienes la libertad de diseño. Uno de los nuevos controles en esta familia

  • Repetidor – Muy ligero. Sin funcionalidad incorporada, como encabezados, pies de página. Tiene la menor sobrecarga.

Todos los demás lo golpean: Depende.

Ahora, para obtener orientación específica (ampliando la excelente respuesta de WebDude anterior) …

¿Su diseño encaja en una hoja de cálculo natural o en una vista de cuadrícula de los datos? GridView .

¿Necesita mostrar una lista u otra vista de datos formateada, posiblemente con encabezados y pies de página, y probablemente con controles y / o formatos específicos para cada registro de datos? (Por ejemplo, enlaces personalizados, posiblemente LinkButtons, o controles de edición específicos?) ¿Esta visualización específicamente no se ajusta naturalmente a una hoja de cálculo o vista de cuadrícula? Vista de la lista

Si cumple con todos los criterios de ListView, pero naturalmente encajaría en una cuadrícula, puede considerar DataList .

Voy por Repeater cuando solo necesito algunos datos básicos iterados con algunos bits de diseño personalizado, sin encabezados, sin pies de página, agradable y limpio.

Vista de marcado

Declarar el siguiente código de ejemplo es posible para los 3 (ListView, DataList, Repeater)

  <%# Eval("Name")%>   

en las siguientes listas Puede ver las plantillas y opciones disponibles para cada una de ellas y ver las diferencias por usted mismo

ListView (tenga en cuenta la edición, grupo, inserción, diseño)

  • AlternatingltemTemplate
  • EditltemTemplate
  • EmptyDataTemplate
  • EmptyltemTemplate
  • GroupSeparatorTemplate
  • GroupTemplate
  • lnsertltemTemplate
  • ItemSeparatorTemplate
  • ItemTemplate
  • LayoutTemplate
  • SelectedltemTemplate

DataList (tenga en cuenta los pares de estilo)

  • AlternatingltemStyle
  • AlternatingltemTemplate
  • EditltemStyle
  • EditltemTemplate
  • FooterStyle
  • FooterTemplate
  • HeaderStyle
  • HeaderTemplate
  • ItemStyle
  • ItemTemplate
  • SelectedltemStyle
  • SelectedltemTemplate
  • SeparatorStyle
  • SeparatorTemplate

Reloj de repetición

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate
  • ItemTemplate
  • SeparatorTemplate

Vista de código (vista avanzada)

CompositeDataBoundControl :

mira la siguiente jerarquía de clases (y controles relacionados).

estos controles alojan otros controles asp.net en sus plantillas para mostrar datos enlazados al usuario

Las clases CompositeDataBoundControl (y controles relacionados)

Algunas descripciones para mejores aclaraciones

El control ListView

El control ListView también usa plantillas para la visualización de datos. Sin embargo, admite muchas plantillas adicionales que permiten más escenarios cuando se trabaja con sus datos. Estas plantillas incluyen LayoutTemplate, GroupTemplate, ItemSeparatorTemplate .

El control ListView (a diferencia de DataList y Repeater ) también admite implícitamente la capacidad de editar, insertar y eliminar datos mediante el uso de un control de fuente de datos. Puede definir plantillas individuales para cada uno de estos escenarios.

El control DataList

El control DataList funciona como el control Repeater . Repite los datos de cada fila en su conjunto de datos, y muestra estos datos de acuerdo con su plantilla definida. Sin embargo , establece los datos definidos en la plantilla dentro de varias estructuras HTML. Esto incluye opciones para el diseño horizontal o vertical, y también le permite establecer cómo se deben repetir los datos, como el flujo o el diseño de la tabla.

El control DataList no usa automáticamente un control de fuente de datos para editar datos. En cambio, proporciona eventos de comando en los que puede escribir su propio código para estos escenarios. Para habilitar estos eventos, agregue un control Button a una de las plantillas y establezca la propiedad CommandName del botón para editar, eliminar, actualizar o cancelar la palabra clave. El evento apropiado es luego levantado por el control DataList.

El control del repetidor

El control Repeater también usa plantillas para definir el enlace personalizado. Sin embargo, no muestra datos como registros individuales. En cambio, repite las filas de datos como especifique en su plantilla. Esto le permite crear una única fila de datos y hacer que se repita en su página.

El control Repeater es una plantilla de solo lectura . Es decir, solo admite ItemTemplate. No admite implícitamente edición, inserción y eliminación. Debe considerar uno de los otros controles si necesita esta funcionalidad, de lo contrario tendrá que codificarlo usted mismo para el control Repeater.


Las descripciones anteriores son de MCTS Exam 70-515 Desarrollo de aplicaciones web con el libro Microsoft.NET Framework 4 .

DataGrid ni siquiera se menciona en este libro y es reemplazado por GridViews populares y responde bien por otros usuarios

¡En efecto! He escrito sobre las diferencias entre las herramientas de datos de ASP.NET 4.0 . Básicamente, las vistas de cuadrícula son la forma más poderosa de presentar información tabular, mientras que los controles ListView son para presentaciones más complicadas de datos repetidos. Si estuviera asesorando a un novato de ASP.NET, les diría que aprendan gridviews al revés e ignoren los otros controles para empezar.

Todo se reduce a la forma en que desea diseñar sus datos.

Si necesita controlar el diseño (como tablas frente a CSS versus lo que sea), cuando use un Repeater o ListView. Entre los dos, ListView te ofrece muchos más eventos y comandos integrados para editar, seleccionar e insertar. Además, funcionalidad de búsqueda y agrupación. Un repetidor es extremadamente simple, repite un diseño con los datos. Como está construyendo el diseño a mano, Listview y Repeater requieren más código.

GridView es un DataGrid actualizado, por lo que casi no hay ningún motivo para utilizar DataGrid. GridView funciona muy bien cuando se conecta a fonts de datos ASP.NET estándar, pero lo restringe a un diseño tabular con muchas reglas de diseño. GridView requiere menos código ya que está utilizando un diseño integrado.