Compartir a través de


Información general del control DataGrid (Formularios Windows Forms)

Actualización: noviembre 2007

Nota:

Aunque el control DataGridView viene a reemplazar y a agregar funcionalidad al control DataGrid, este control DataGrid se conserva a efectos de compatibilidad con versiones anteriores y para uso futuro, según sea el caso. Para obtener más información, vea Diferencias entre los controles DataGridView y DataGrid de formularios Windows Forms.

El control DataGrid de formularios Windows Forms muestra datos en una serie de filas y columnas. En el caso más sencillo, la cuadrícula está enlazada a un origen de datos con una sola tabla que no contiene relaciones. En ese caso, los datos aparecen en filas y columnas simples, como en una hoja de cálculo. Para obtener más información sobre cómo enlazar datos a otros controles, vea Enlace de datos y formularios Windows Forms.

Si el control DataGrid está enlazado a datos con varias tablas relacionadas y está habilitada la navegación en la cuadrícula, ésta mostrará controles de expansión en cada fila. Con un ampliador, el usuario se puede desplazar de una tabla primaria a una tabla secundaria. Al hacer clic en un nodo se muestra la tabla secundaria, y al hacer clic en un botón Atrás se muestra la tabla primaria original. De este modo, la cuadrícula muestra las relaciones jerárquicas entre tablas.

La siguiente captura de pantalla muestra un control DataGrid enlazado a datos con varias tablas.

Un control DataGrid enlazado a datos con múltiples tablas

El control DataGrid puede proporcionar una interfaz de usuario para un conjunto de datos, navegación entre tablas relacionadas, así como formato enriquecido y funciones de edición.

La presentación y la manipulación de datos son funciones independientes: el control administra la interfaz de usuario, mientras que las actualizaciones de datos son controladas por la arquitectura de enlace a datos de formularios Windows Forms y por los proveedores de datos de .NET Framework. En consecuencia, es posible que múltiples controles enlazados al mismo origen de datos permanezcan sincronizados.

Nota para Visual Basic:

Si está familiarizado con el control DataGrid en Visual Basic 6.0, encontrará algunas diferencias significativas en el control DataGrid de formularios Windows Forms.

Cuando la cuadrícula está enlazada a un DataSet, las columnas y las filas se crean, se formatean y se rellenan automáticamente. Para obtener más información, vea Enlace de datos y formularios Windows Forms. Después de la generación del control DataGrid, puede agregar, eliminar, reorganizar y dar formato a columnas y filas según sus necesidades.

Enlazar datos al control

Para que el control DataGrid funcione, se debe enlazar a un origen de datos utilizando las propiedades DataSource y DataMember en tiempo de diseño o el método SetDataBinding en tiempo de ejecución. Este enlace apunta DataGrid a un objeto de origen de datos con instancias, como DataSet o DataTable). El control DataGrid muestra resultados de acciones que se realizan en los datos. La mayoría de las acciones específicas para datos no se ejecutan por medio del control DataGrid, sino a través del origen de datos.

Si los datos del conjunto de datos enlazado se actualizan mediante cualquier mecanismo, el control DataGrid reflejará los cambios. Si la cuadrícula de datos y sus estilos de tabla y columna tienen la propiedad ReadOnly establecida en false, los datos del conjunto de datos pueden actualizarse por medio del control DataGrid.

En un control DataGrid sólo puede mostrarse una tabla a la vez. Si hay establecida entre tablas una relación primaria-secundaria, el usuario puede desplazarse entre las tablas relacionadas para seleccionar la tabla que se mostrará en el control DataGrid. Para obtener información sobre cómo se enlaza un control DataGrid a un origen de datos de ADO.NET en tiempo de diseño o en tiempo de ejecución, vea Cómo: Enlazar el control DataGrid de formularios Windows Forms a un origen de datos.

Entre los orígenes de datos válidos para el control DataGrid se incluyen:

Si el origen es un conjunto de datos, este último podría ser un objeto del formulario o un objeto pasado al formulario por un servicio Web XML. Se puede enlazar a conjuntos de datos con o sin tipo.

Asimismo, es posible enlazar un control DataGrid a estructuras adicionales si los objetos de la estructura, por ejemplo los elementos de una matriz, exponen propiedades públicas. La cuadrícula mostrará todas las propiedades públicas de los elementos de la estructura. Por ejemplo, si se enlaza el control DataGrid a una matriz de objetos Customer, la cuadrícula mostrará todas las propiedades públicas de esos objetos Customer. En algunos casos, esto significa que aunque sea posible enlazar con la estructura, la estructura enlazada resultante puede que no tenga ninguna aplicación práctica. Por ejemplo, es posible enlazar con una matriz de enteros, pero debido a que el tipo de datos Integer no admite una propiedad pública, la cuadrícula no puede mostrar ningún dato.

Es posible enlazar con las siguientes estructuras si sus elementos exponen propiedades públicas:

  • Cualquier componente que implemente la interfaz IList. Esto incluye las matrices unidimensionales.

  • Cualquier componente que implemente la interfaz IListSource.

  • Cualquier componente que implemente la interfaz IBindingList.

Para obtener más información sobre posibles orígenes de datos, vea Orígenes de datos compatibles con formularios Windows Forms.

Mostrar la cuadrícula

Un uso común del control DataGrid es mostrar una única tabla de datos de un conjunto de datos. Sin embargo, el control puede usarse también para mostrar varias tablas, incluidas las tablas relacionadas. La presentación de la cuadrícula se ajusta automáticamente según el origen de datos. La tabla siguiente refleja lo que se muestra para las distintas configuraciones.

Contenido del conjunto de datos

Qué se muestra

Una sola tabla.

La tabla se muestra en una cuadrícula.

Varias tablas.

La cuadrícula puede mostrar una vista de árbol por la que los usuarios pueden navegar para localizar la tabla que desean mostrar.

Varias tablas relacionadas.

La cuadrícula puede mostrar una vista de árbol con la que seleccionar tablas, o se puede especificar que la cuadrícula muestre la tabla primaria. Los registros de la tabla primaria permiten a los usuarios navegar por las filas secundarias relacionadas.

Nota:

Las tablas de un conjunto de datos se relacionan mediante DataRelation.

Cuando el control DataGrid muestra una tabla y la propiedad AllowSorting está establecida en true, es posible ordenar los datos de nuevo haciendo clic en los encabezados de columna. El usuario puede también agregar filas y modificar celdas.

Las relaciones entre un conjunto de tablas se muestran a los usuarios por medio de una estructura de navegación primaria o secundaria. Las tablas primarias son el nivel de datos más alto y las secundarias son las que se derivan de listados individuales de las tablas primarias. En cada fila primaria que contiene una tabla secundaria se muestran controles de expansión. Al hacer clic en un ampliador, se genera una lista de vínculos de tipo Web a las tablas secundarias. Cuando el usuario selecciona un vínculo, se muestra la tabla secundaria. Si se hace clic en el icono para mostrar u ocultar filas primarias (), se ocultará la información relativa a la tabla primaria (o aparecerá de nuevo si el usuario la había ocultado previamente). El usuario puede hacer clic en un botón Atrás para regresar a la tabla mostrada previamente.

Columnas y filas

El control DataGrid consta de una colección de objetos DataGridTableStyle contenidos en la propiedad TableStyles del control DataGrid. Un estilo de tabla puede contener una colección de objetos DataGridColumnStyle contenidos en la propiedad GridColumnStyles de DataGridTableStyle. Puede editar las propiedades TableStyles y GridColumnStyles utilizando editores de colección a los que se obtiene acceso a través de la ventana Propiedades.

Se puede obtener acceso a través de GridTableStylesCollection a cualquier DataGridTableStyle asociado al control DataGrid . GridTableStylesCollection se puede editar en el diseñador con el editor de colección DataGridTableStyle, o mediante programación a través de la propiedad TableStyles del control DataGrid.

La siguiente ilustración muestra los objetos incluidos en el control DataGrid.

Los estilos de tabla y de columna se sincronizan con objetos DataTable y DataColumn estableciendo sus propiedades MappingName en las propiedades TableName y ColumnName apropiadas. Si se agrega un DataGridTableStyle que no tiene estilos de columna a un control DataGrid enlazado a un origen de datos válido, y la MappingName propiedad de dicho estilo de tabla se establece a una propiedad TableName válida, se crea una colección de objetosDataGridColumnStyle para dicho estilo de tabla. Para cada DataColumn que se encuentre en la colección Columns de la DataTable, se agrega una DataGridColumnStyle correspondiente a GridColumnStylesCollection. Se tiene acceso a GridColumnStylesCollection a través de la propiedad GridColumnStyles de DataGridTableStyle. Se pueden agregar o eliminar columnas de la cuadrícula mediante el método Add o Remove en GridColumnStylesCollection. Para obtener más información, vea Cómo: Agregar tablas y columnas al control DataGrid de Windows Forms y Cómo: Eliminar u ocultar columnas del control DataGrid de formularios Windows Forms.

Una colección de tipos de columna amplía la clase DataGridColumnStyle con funciones de texto enriquecido y edición. Todos los tipos de columna heredan de la clase base DataGridColumnStyle. La clase que se crea depende de la propiedad DataType de la DataColumn en la que se basa DataGridColumn. Por ejemplo, una DataColumn que tiene su propiedad DataType establecida en Boolean se asociará a DataGridBoolColumn. En la tabla siguiente se describe cada uno de estos tipos de columna.

Tipo de columna

Descripción

DataGridTextBoxColumn

Acepta y muestra datos en forma de cadenas con formato o sin formato. Las capacidades de edición son las mismas que las de edición de datos de un control TextBox simple. Hereda de DataGridColumnStyle.

DataGridBoolColumn

Acepta y muestra valores true, false y null. Hereda de DataGridColumnStyle.

Hacer doble clic en el borde derecho de una columna cambia su tamaño para mostrar su título completo y su entrada más ancha.

Estilos de tabla y de columna

Tan pronto como establezca el formato predeterminado del control DataGrid, puede personalizar los colores que se utilizarán cuando se muestren determinadas tablas en la cuadrícula de datos.

Esto se consigue creando instancias de la clase DataGridTableStyle. Los estilos de tabla especifican el formato de tablas específicas, distinto del formato predeterminado del propio control DataGrid. Cada tabla puede tener sólo un estilo de tabla definido para ella cada vez.

Algunas veces, deseará tener una columna específica con una apariencia diferente del resto de columnas de una tabla de datos determinada. Puede crear un conjunto personalizado de estilos de columna mediante la propiedad GridColumnStyles.

Los estilos de columna están relacionados con las columnas de un conjunto de datos igual que los estilos de tabla están relacionados con las tablas de datos. Igual que cada tabla sólo puede tener definido un estilo de tabla cada vez, también cada columna sólo puede tener un estilo de columna definido, en un estilo de tabla particular. Esta relación se define en la propiedad MappingName de la columna.

Si ha creado un estilo de tabla sin agregarle estilos de columna, Visual Studio agregará estilos de columna predeterminados cuando se creen el formulario y la cuadrícula en tiempo de ejecución. Sin embargo, si ha creado un estilo de tabla y le ha agregado cualquier estilo de columna, Visual Studio no creará ningún estilo de columna. A su vez, deberá definir estilos de columna y ponerles el nombre de asignación para incluir las columnas que desea que aparezcan en la cuadrícula.

Como especifica qué columnas se incluyen en la cuadrícula de datos asignándoles un estilo de columna y no se ha asignado ningún estilo de columna a las columnas, puede incluir columnas de datos del conjunto de datos que no se muestran en la cuadrícula. Sin embargo, debido a que se incluye la columna de datos en el conjunto de datos, puede editar mediante programación los datos que no se muestran.

Nota:

En general, se han de crear estilos de columna y agregarlos a la colección de estilos de columna antes de agregar estilos de tabla a la colección de estilos de tabla. Cuando se agrega un estilo de tabla vacío a la colección, los estilos de columna se generan automáticamente. Por tanto, se producirá una excepción si intenta agregar estilos de columna nuevos con valores MappingName duplicados a la colección de estilos de columna.

A veces, conviene quitar una columna entre muchas de ellas (por ejemplo, el conjunto de datos contiene 50 columnas y sólo desea 49 de ellas). En este caso, es más fácil importar las 50 columnas y quitar una mediante programación que agregar mediante programación cada una de las 49 columnas que desee que aparezcan.

Formato

Entre las opciones de formato que se pueden aplicar al control DataGrid se encuentran los estilos de borde, los estilos de cuadrícula, las fuentes, las propiedades de título, la alineación de datos y la alternancia de colores de fondo entre filas. Para obtener más información, vea Cómo: Dar formato al control DataGrid de formularios Windows Forms.

Eventos

Además de eventos de control comunes tales como MouseDown, Enter y Scroll, el control DataGrid admite eventos asociados con la edición y la navegación dentro de la cuadrícula. La propiedad CurrentCell determina cuál es la celda seleccionada. Cuando el usuario navega hasta una nueva celda, se provoca el evento CurrentCellChanged. Cuando el usuario navega hasta una nueva tabla a través de relaciones primarias o secundarias se produce el evento Navigate. El evento BackButtonClick se produce cuando el usuario hace clic en el botón Atrás mientras ve una tabla secundaria; el evento ShowParentDetailsButtonClick se produce cuando se hace clic en el icono para mostrar u ocultar filas primarias.

Vea también

Tareas

Cómo: Enlazar el control DataGrid de formularios Windows Forms a un origen de datos

Cómo: Agregar tablas y columnas al control DataGrid de Windows Forms

Cómo: Eliminar u ocultar columnas del control DataGrid de formularios Windows Forms

Cómo: Dar formato al control DataGrid de formularios Windows Forms

Otros recursos

DataGrid (Control, formularios Windows Forms)