Share via


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

Nota

El control DataGridView reemplaza y agrega funcionalidad al control DataGrid; sin embargo, el control DataGrid se conserva a efectos de compatibilidad con versiones anteriores y uso futuro, en su caso. Para obtener más información, consulte Diferencias entre los controles DataGridView y DataGrid de formularios Windows Forms.

El control DataGrid de Windows Forms muestra los datos en una serie de filas y columnas. El caso más simple es cuando 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 simples filas y columnas, como en una hoja de cálculo. Para obtener más información sobre cómo enlazar datos a otros controles, vea el artículo sobre enlace de datos y formularios Windows Forms.

Si DataGrid está enlazado a datos con varias tablas relacionadas, y si la navegación está habilitada en la cuadrícula, la cuadrícula mostrará expansores en cada fila. Con un expansor, el usuario puede pasar 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 de retroceso se muestra la tabla primaria original. De esta manera, la cuadrícula muestra las relaciones jerárquicas entre tablas.

En la captura de pantalla siguiente se muestra un control DataGrid enlazado a datos con varias tablas:

Aplicación de WinForms que muestra un control DataGrid enlazado a varias etiquetas.

DataGrid puede proporcionar una interfaz de usuario para un conjunto de datos, navegación entre tablas relacionadas, formato enriquecido y capacidades de edición.

La presentación y manipulación de datos son funciones independientes: el control administra la interfaz de usuario, mientras que las actualizaciones de datos se administran mediante la arquitectura de enlace de datos de Windows Forms y los proveedores de datos de .NET Framework. Por lo tanto, si hay varios controles enlazados al mismo origen de datos, estarán sincronizados.

Nota

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

Cuando la cuadrícula está enlazada a un DataSet, las columnas y filas se crean, se les aplica formato y se rellenan automáticamente. Para obtener más información, consulta Data Binding and Windows Forms. Después generar el control DataGrid, puede agregar, eliminar, reorganizar y dar formato a las columnas y filas según sus necesidades.

Enlazar datos al control

Para que el control DataGrid funcione, debe enlazarse a un origen de datos mediante las propiedades DataSource y DataMember en tiempo de diseño o el método SetDataBinding en tiempo de ejecución. Este enlace apunta el control DataGrid a un objeto de origen de datos con instancias, como un DataSet o DataTable). El control DataGrid muestra los resultados de las acciones que se realizan en los datos. Las acciones más específicas de los datos no se realizan a través de 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 refleja 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.

Tan solo se puede mostrar una tabla en DataGrid a la vez. Si se define una relación primaria-secundaria entre las tablas, el usuario puede desplazarse entre las tablas relacionadas para seleccionar la tabla que se mostrará en el control DataGrid. Para información sobre el enlace de un control DataGrid a un origen de datos ADO.NET en tiempo de diseño o en tiempo de ejecución, consulte Procedimiento para enlazar el control DataGrid de Windows Forms a un origen de datos.

Los orígenes de datos válidos para DataGrid son:

Si su origen es un conjunto de datos, el conjunto de datos podría ser un objeto en el formulario o un objeto pasado al formulario por un servicio web XML. Puede enlazar a conjuntos de datos con tipo o sin tipo.

También puede enlazar un control DataGrid a estructuras adicionales si los objetos de la estructura, como 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 enlaza el control DataGrid a una matriz de objetos customer, la cuadrícula mostrará todas las propiedades públicas de esos objetos customer. En algunas instancias esto significa que, aunque se puede enlazar con la estructura, la estructura enlazada resultante podría no tener aplicación práctica. Por ejemplo, se puede enlazar a una matriz de enteros, pero dado que el tipo de datos Integer no admite una propiedad pública, la cuadrícula no puede mostrar los datos.

Las siguientes estructuras se pueden enlazar si sus elementos exponen propiedades públicas:

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

  • Cualquier componente que implemente la interfaz .

  • Cualquier componente que implemente la interfaz .

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

Visualización de 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 también puede usarse para mostrar varias tablas, incluidas tablas relacionadas. La presentación de la cuadrícula se ajusta automáticamente conforme al origen de datos. En la tabla siguiente se indica lo que se muestra según las diferentes configuraciones.

Contenido del conjunto de datos Qué se muestra
Tabla única. 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 desplazarse para localizar la tabla que desean mostrar.
Varias tablas relacionadas. La cuadrícula puede mostrar una vista de árbol para seleccionar las tablas, o usted puede especificar que la cuadrícula muestre la tabla primaria. Los registros de la tabla primaria permiten a los usuarios desplazarse a las filas secundarias relacionadas.

Nota

Las tablas de un conjunto de datos se relacionan mediante DataRelation. Consulte también Creación de relaciones entre conjuntos de datos.

Cuando el control DataGrid muestra una tabla y la propiedad AllowSorting se establece en true, los datos se pueden volver a ordenar haciendo clic en los encabezados de columna. El usuario también puede agregar filas y modificar celdas.

Las relaciones entre un conjunto de tablas se muestran a los usuarios con una estructura de elementos primarios y secundarios de navegación. Las tablas primarias son el nivel más alto de los datos y las tablas secundarias son las tablas de datos que se derivan de los listados individuales de las tablas primarias. Los expansores se muestran en cada fila primaria que contiene una tabla secundaria. Al hacer clic en un expansor, 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. Al hacer clic en el icono de mostrar u ocultar las filas primarias (icono mostrar u ocultar las filas primarias), se ocultará la información sobre la tabla primaria o reaparecerá si el usuario la ha ocultado previamente. El usuario puede hacer clic en un botón Atrás para volver a la tabla mostrada previamente.

Columnas y filas

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

Cualquier DataGridTableStyle asociado con el control DataGrid puede tener acceso mediante GridTableStylesCollection. 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.

En la ilustración siguiente se muestran los objetos incluidos en el control DataGrid:

Diagrama que muestra objetos incluidos en el control DataGrid.

Los estilos de tabla y columna se sincronizan con objetos DataTable y objetos DataColumn al establecer sus propiedades MappingName en las propiedades TableName y ColumnName correspondientes. Cuando un DataGridTableStyle que no tiene estilos de columna se agrega a un control DataGrid enlazado a un origen de datos válido y la propiedad MappingName de ese estilo de tabla se establece en una propiedad TableName válida, se crea una colección de objetos DataGridColumnStyle para ese estilo de tabla. Por cada DataColumn encontrado en la colección Columns de DataTable, se agrega un DataGridColumnStyle correspondiente al GridColumnStylesCollection. El acceso a GridColumnStylesCollection se realiza mediante la propiedad GridColumnStyles de DataGridTableStyle. Las columnas se pueden agregar o eliminar desde la cuadrícula mediante el método Add o Remove en GridColumnStylesCollection. Para obtener más información, consulte los artículos sobre cómo agregar tablas y columnas al control DataGrid de formularios Windows Forms y cómo eliminar u ocultar columnas en el control DataGrid de formularios Windows Forms.

Una colección de tipos de columna extiende la clase DataGridColumnStyle con formato enriquecido y capacidades de edición. Todos los tipos de columna se heredan de la clase base DataGridColumnStyle. La clase que se crea depende de la propiedad DataType del objeto DataColumn en el que se basa DataGridColumn. Por ejemplo, un DataColumn que tiene su propiedad DataType establecida en Boolean se asociará con DataGridBoolColumn. En la siguiente tabla se describe cada uno de estos tipos de columna.

Tipo de columna Descripción
DataGridTextBoxColumn Acepta y muestra los datos como cadenas con o sin formato. Las capacidades de edición son las mismas que se usan para modificar los datos de un TextBox simple. Se hereda de DataGridColumnStyle.
DataGridBoolColumn Acepta y muestra true, false y valores null. Se hereda de DataGridColumnStyle.

Al hacer doble clic en el borde derecho de una columna se cambia el tamaño de la columna para mostrar su leyenda completa y su entrada más ancha.

Estilos de tabla y estilos de columna

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

Esto se logra mediante la creación de instancias de la clase DataGridTableStyle. Los estilos de tabla especifican el formato de tablas específicas, distinto del formato predeterminado del propio control DataGrid. Una tabla no puede tener más de un estilo definido.

Es posible que en ocasiones desee que una columna concreta tenga una apariencia diferente a la del resto de columnas de una tabla de datos. En ese caso, 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 del mismo modo que los estilos de tabla están relacionados con las tablas de datos. Al igual que sucede con las tablas, que no pueden tener más de un estilo de tabla definido, una columna no puede tener definido más de un estilo de columna en un estilo de tabla concreto. 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 estilos de columna, Visual Studio no creará ningún estilo de columna. Además, necesitará definir estilos de columna y asignarlos con el nombre de la asignación para que las columnas que desee aparezcan en la cuadrícula.

Dado que usted especifica las columnas que se incluyen en la cuadrícula de datos al asignarles un estilo de columna y no se les ha asignado ningún estilo de columna, puede incluir columnas de datos en el conjunto de datos que no se muestran en la cuadrícula. Sin embargo, dado que la columna de datos se incluye en el conjunto de datos, puede editar mediante programación los datos que no se muestran.

Nota

En general, es mejor que cree los estilos de columna y los agregue a la colección de estilos de columna antes de agregar estilos de tabla a la colección de estilos de tabla. Si agrega un estilo de tabla vacío a la colección, se generan automáticamente los estilos de columna. Por lo 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.

Es posible que en ocasiones desee quitar una sola columna de muchas; por ejemplo, si el conjunto de datos contiene 50 columnas y solo desea 49. En este caso, es más fácil importar las 50 columnas y quitar una mediante programación, en lugar de agregar mediante programación cada una de las 49 columnas que desee.

Aplicación de formato

El formato que se pueden aplicar al control DataGrid incluye estilos de borde, estilos de línea de cuadrícula, fuentes, propiedades de título, alineación de datos y colores alternativos para el fondo de las filas. Para obtener más información, consulte el artículo sobre cómo dar formato al control DataGrid de formularios Windows Forms.

Eventos

Además de los eventos de control comunes como MouseDown, Enter y Scroll, el control DataGrid admite eventos asociados con la edición y navegación dentro de la cuadrícula. La propiedad CurrentCell determina la celda seleccionada. El evento CurrentCellChanged se genera cuando el usuario navega a una nueva celda. Cuando el usuario navega a una nueva tabla a través de relaciones de elementos primarios y secundarios, se genera el evento Navigate. El evento BackButtonClick se genera cuando el usuario hace clic en el botón Atrás mientras mira una tabla secundaria y el evento ShowParentDetailsButtonClick se genera cuando se hace clic en el icono de mostrar u ocultar las filas primarias.

Consulte también