Red de conocimiento del abogados - Ley de patentes - Cómo utilizar el control DataGrid

Cómo utilizar el control DataGrid

[Control DataGrid]

Entre los tres controles, DataGrid es, con diferencia, el que tiene más funciones, pero también el menos flexible. Esta inflexibilidad en la generación de HTML se debe al hecho de que fue diseñado originalmente para generar datos en forma de tabla. Se creará un par de etiquetas cuando se genere cada registro y un par de etiquetas cuando se genere el valor de cada campo.

El DataGrid contiene varias propiedades que pueden mejorar su usabilidad. Por ejemplo, al establecer la propiedad AllowSorting de DataGrid en verdadero y agregar una pequeña cantidad de código, DataGrid tiene la función de ordenar por diferentes campos. Además, configurar propiedades relacionadas para realizar funciones de paginación y edición de registros únicos mejora aún más la usabilidad de DataGrid.

Además del soporte de usabilidad, DataGrid también ahorra tiempo de desarrollo. Usar DataGrid para mostrar datos en una página WEB solo requiere dos líneas de código. Una línea se usa para configurar la fuente de datos (DataSource) vinculada a DataGrid y la otra se usa para ejecutar el comando de vinculación (DataBind()). Por supuesto, no es imposible implementar tales funciones en el Repetidor, pero en comparación con el uso de DataGrid, se necesita dedicar mucho tiempo y energía para implementar estas funciones.

Aunque DataGrid tiene ventajas tan impresionantes, no se pueden ignorar sus dos deficiencias. Primero, como se mencionó anteriormente, DataGrid tiene una funcionalidad limitada cuando se trata de personalizar los datos de salida. Por supuesto, puedes personalizar fuentes, colores, anchos de línea, etc., pero siempre será una tabla HTML.

Cada columna del DataGrid es una instancia de la clase DataGridColumn. Hay cinco formas de columnas DataGrid:

·BoundColumn

·ButtonColumn

·EditColumn

·HyperLinkColumn

·TemplateColumn

Cada tipo permite el acceso a la página para interactuar con el DataGrid de alguna manera. Por ejemplo, BoundColumn muestra el valor del campo de DataSource como texto sin formato; HyperLinkColumn lo muestra como un hipervínculo. Además, los desarrolladores pueden personalizar el estilo de las columnas DataGrid escribiendo una clase personalizada que hereda de DataGridColumn.

Aunque DataGrid tiene tantas propiedades que mejoran la usabilidad, todavía parece rígido y no lo suficientemente flexible. Esto se debe a que no importa qué tipo de atributos, la tabla generada por DataGrid debe configurarse de manera relacionada para que surta efecto. Esto sin duda hará que la mesa se hinche y pierda flexibilidad. Por ejemplo, la configuración de DataGridColumn tendrá efecto en la columna correspondiente de cada fila de la tabla. Esta limitación de DataGrid impide una visualización más creativa de los datos. Por ejemplo, si desea que se muestre cada quinto registro en una fila, o no desea que una tabla muestre datos en absoluto, tendrá que dejar de usar DataGrid.

El segundo defecto de DataGrid es su rendimiento. Entre los tres controles de datos, DataGrid tiene el peor rendimiento. El ViewState generado por DataGrid será bastante grande, especialmente si DataGrid contiene muchas filas. Por supuesto, también puede desactivar la función ViewState, pero el precio es que no podrá utilizar funciones como clasificación, paginación y edición de registros.

Para medir el rendimiento de DataGrid, utilicé la herramienta Web Application Stress Tool (WAST) de Microsoft. La configuración precisa de las condiciones de prueba y el código de prueba se proporcionarán al final de este artículo.

WAST realizará una solicitud al servidor WEB para una URL específica.

Cada prueba realizará solicitudes continuas a una URL durante un minuto. WAST será un valor de rendimiento que representa cuántas veces el servidor WEB ejecutará la página ASP.Net en un segundo.

Ambas pruebas mostrarán un DataGrid que solo muestra datos. DataGrid mostrará el contenido de 4 campos de la tabla Clientes en la base de datos de Northwinds (91 registros en total). La propiedad AutoGenerateColumns de DataGrid se establecerá en True. La primera prueba coloca el DataGrid en un formulario, la segunda no. Si coloca el control en un formulario sin especificar su EnableViewState como False, el control siempre usará ViewState para mantener su estado. El propósito de configurar ViewState es tener un proceso que requiera mucho tiempo. Veamos qué impacto tiene en las solicitudes de página por segundo. Los resultados de la prueba se muestran en la Figura 1.

Figura 1: Número de solicitudes por segundo a DataGrid

En el DataList y el Repetidor que comentaremos y probaremos a continuación, veremos que su rendimiento será mejor que el DataGrid.

[Control DataList]

Como se mencionó anteriormente, DataGrid usa tablas para mostrar datos. Es posible que necesite mayor control sobre la visualización de datos. Por ejemplo, desea mostrar datos en una tabla, pero en lugar de tener solo un registro por fila, desea tener varias filas. O tal vez no desee utilizar una tabla para mostrar datos, sino simplemente mostrarlos en una serie de etiquetas .

DataList abandona el concepto de visualización de listas de datos en DataGrid, pero utiliza plantillas predefinidas (Template) para personalizar la visualización. Al utilizar plantillas, puede utilizar etiquetas HTML o enlace de datos al mismo tiempo. El enlace de datos aquí tiene el formato: <%# ... %>, que se utiliza para mostrar los registros de datos de una entrada determinada en la fuente de datos. El siguiente ItemTemplate mostrará el campo CompanyName en la fuente de datos:

<%# DataBinder.Eval(Container.DataItem, "CompanyName") %>

Pasar Modificando la plantilla anterior, podemos hacer que el campo CompanyName aparezca en negrita y el campo ContactName aparezca debajo de CompanyName en estilo normal.

<%# DataBinder.Eval(Contenedor .DataItem, "CompanyName") %>


<%# DataBinder.Eval(Container.DataItem, "ContactName") %>

Para cada registro en la fuente de datos DataList, ItemTemplate utilizará el mismo estilo definiendo etiquetas HTML Mostrar datos . ItemTemplate también admite otras 6 plantillas:

·AlternatingItemTemplate

·EditItemTemplate

·FooterTemplate

·HeaderTemplate

·ItemTemplate

·SelectedItemTemplate

·SeparatorTemplate

De forma predeterminada, DataList mostrará registros en una tabla HTML. Sin embargo, al configurar la propiedad repetirColumna, puede establecer cuántos registros se muestran en una fila. Yendo más allá, incluso puedes especificar que el contenido de DatList no se muestre en la tabla, sino en la etiqueta . Esto se puede lograr configurando la propiedad RepeatLayout.

A través de las propiedades plantilla, REPETIRColumn y REPETITIONLayout, es obvio que DataList es más flexible que DataGrid en la personalización de estilos de salida de datos, lo que hace que el diseño de la interfaz de usuario sea más amigable. Por supuesto, también necesitamos realizar comparaciones funcionales, como paginación, clasificación, edición de registros, etc.

DataList admitirá la función de edición de registros a través de la plantilla EditItemIndex y los eventos EditCommand, UpdateCommand y CancelCommand. Sin embargo, en comparación con DataGrid, su implementación requiere más tiempo de desarrollo. Hay dos razones principales para esta inconsistencia en el tiempo de desarrollo:

·Los botones Editar/Actualizar/Eliminar se pueden agregar automáticamente en DataGrid configurando EditCommandColumn, mientras que en DataList, deben agregarse manualmente.

·El estilo de columna BoundColumn de DataGrid utiliza automáticamente el control de cuadro de texto para mostrar la interfaz de edición de registros. En DataList, debe especificar explícitamente qué interfaz de edición usar a través de EditItemTemplate.

La implementación de las funciones de paginación y clasificación en DataList es la misma que la función de edición de registros y no es muy complicada. Estas funciones se pueden implementar con una programación inteligente y solo requieren algo de tiempo de desarrollo. Por lo tanto, si los usuarios necesitan ordenar o editar registros de datos, usar DataGrid es mucho más conveniente que usar DataList.

El rendimiento de DataList es mejor que DataGrid, especialmente cuando DataList se incluye en Form. La Figura 2 muestra la prueba de DataList de WAST.

Figura 2: Número de solicitudes por segundo para DataList

Se puede observar que cuando se incluye en un formulario web, el rendimiento de DataList es significativamente mejor que el de DataGrid.

〔Control de repetidor〕

El control de repetidor es el control más flexible en la salida HTML entre los tres controles de datos. El repetidor generará registros de datos exactamente en el formato que necesite. Por lo tanto, si no desea generar datos en formato tabular o como un simple, es mejor utilizar el Repetidor.

Al igual que DataList, Repeater utiliza plantillas para especificar estilos de salida. El repetidor admite las siguientes cinco plantillas:

·AlternatingItemTemplate

·FooterTemplate

·HeaderTemplate

·ItemTemplate

·SeparatorTemplate

HederTemplate y FooterTemplate especifican el contenido HTML que debe procesarse antes o después de la salida del registro real. AlternatingItemTemplate y ItemTemplate especifican el estilo HTML real de cada registro de salida. Por ejemplo, debe vincular un conjunto de datos que contiene información de los empleados a un repetidor con un campo denominado NombreEmpleado. Si desea mostrar estos registros en la página sin ordenarlos, puede utilizar la siguiente declaración:

< HeaderTemplate>

  • <%# DataBinder.Eval( Container.DataItem, "EmployeeName") %>

La clase Repetidor no hereda de la clase WebControl, que es diferente de DataGrid y DataList. Por lo tanto, el Repetidor no tiene atributos de estilo que configurar. En otras palabras, si desea formatear los registros de datos del repetidor de salida, debe usar etiquetas HTML para establecer el estilo. Por ejemplo, en un ejemplo, si queremos mostrar el nombre del empleado en negrita, debemos configurar la etiqueta HTML correspondiente en ItemTemplate:

  • < b> <%# DataBinder.Eval(Container.DataItem, "EmployeeName")%>
  • Y si usas DataGrid o DataList. Podemos lograr esto simplemente configurando la propiedad ItemStyle-Font-Bold en True.

    La falta de configuración de formato del repetidor se refleja directamente en la extensión del tiempo de desarrollo. Cuantos más requisitos haya en el formato de los datos de salida, más largo será el ciclo de desarrollo. Las etiquetas HTML que especifican los estilos en la plantilla también se vuelven cada vez más confusas y será más difícil realizar cambios en la página en el futuro, especialmente cuando un nuevo desarrollador se hace cargo del trabajo. Con DataGrid o DataList solo puedes establecer atributos de estilo sin usar plantillas. Además, cuando se trabaja con Visual Studio.Net o ASP.Net Web Matrix, estas propiedades se pueden configurar directamente sin codificación.

    Debido a la extensión del tiempo de desarrollo de Repeater, su soporte para funciones integradas (paginación, clasificación y edición) también parece insuficiente. Por lo tanto, el repetidor tiene deficiencias obvias en términos de usabilidad. Por supuesto, si a los usuarios no les importa cómo se muestran los datos, esto no es gran cosa. Hago hincapié en este "si" porque, aunque los usuarios a veces no requieren la capacidad de paginar, ordenar o editar registros en el momento del diseño, dichos requisitos a menudo surgen más adelante en el desarrollo, o después de que pueden ver los registros mostrados.

    Lo único de Repeater que es mejor que DataGrid y DataList es su rendimiento, que es especialmente mejor que DataGrid. Y ligeramente superior a DataList.

    [Conclusión]

    Al mostrar datos en una página ASP.Net, la mayoría de los programadores optarán por utilizar controles con los que están familiarizados, especialmente DataGrid. Sin embargo, una elección tan ciega sin el "mejor control universal" no es prudente. Antes de elegir un control para mostrar datos, hágase algunas preguntas que le ayudarán a tomar una decisión: ¿Se permitirá a los usuarios ordenar registros? ¿Es necesario mostrar los registros en un formato que no sea de tabla? ¿Se accederá a la página con frecuencia, por lo que se debe considerar el rendimiento?

    DataGrid proporciona la mayor funcionalidad, como permitir a los visitantes editar, ordenar o paginar registros. También es el más fácil de usar, tan simple que sólo necesitas agregarlo a la página sin escribir código adicional. Pero estas facilidades de uso tienen un costo de rendimiento. DataGrid es el menos eficiente de los tres controles, especialmente cuando se utilizan formularios web.

    Al utilizar plantillas, DataList proporciona un mejor efecto de interfaz que DataGrid. Sin embargo, esto conlleva una cierta cantidad de tiempo de desarrollo. Para agregar capacidades de clasificación, paginación y edición, los programadores deben dedicar más esfuerzo a codificar que usar DataGrid, aunque su rendimiento es mejor que DataGrid.

    Finalmente, Repeater permite la máxima personalización HTML de los registros de datos. Generalmente, usar Repetidor para mostrar registros de datos requiere más tiempo de desarrollo que usar DataGrid y DataList. Además, no admite las funciones integradas de edición, clasificación y paginación. Afortunadamente, Repeater es mejor que los otros dos controles en términos de rendimiento, especialmente significativamente mejor que DataGrid.