Tipos de columnas en el control DataGridView de formularios Windows Forms

El control DataGridView usa varios tipos de columnas para mostrar la información y permitir que los usuarios modifiquen o agreguen información.

Al enlazar un control DataGridView y establecer la propiedad AutoGenerateColumns en true, las se generan columnas automáticamente mediante los tipos de columnas predeterminados adecuados para los tipos de datos que contiene el origen de datos enlazado.

También puede crear instancias de cualquiera de las clases de columna y agregarlas a la colección devuelta por la propiedad Columns. Puede crear estas instancias para usarlas como columnas sin enlazar o puede enlazarlas manualmente. Las columnas enlazadas manualmente son útiles, por ejemplo, cuando quiere reemplazar una columna generada automáticamente de un tipo por una columna de otro tipo.

En la tabla siguiente se describen las distintas clases de columnas disponibles para su uso en el control DataGridView.

Clase Descripción
DataGridViewTextBoxColumn Se usa con valores basados en texto. Se genera automáticamente con el enlace a números y cadenas.
DataGridViewCheckBoxColumn Se usa con los valores Boolean y CheckState. Se genera automáticamente con el enlace a valores de estos tipos.
DataGridViewImageColumn Se usa para mostrar imágenes. Se genera automáticamente con el enlace a matrices de bytes, objetos Image u objetos Icon.
DataGridViewButtonColumn Se usa para mostrar botones en celdas. No se genera automáticamente con el enlace. Normalmente se usa como columnas sin enlazar.
DataGridViewComboBoxColumn Se usa para mostrar listas desplegables en celdas. No se genera automáticamente con el enlace. Normalmente se enlaza a los datos manualmente.
DataGridViewLinkColumn Se usa para mostrar vínculos en celdas. No se genera automáticamente con el enlace. Normalmente se enlaza a los datos manualmente.
Su tipo de columna personalizado Puede crear su propia clase de columna heredando la clase DataGridViewColumn o cualquiera de sus clases derivadas para proporcionar apariencia, comportamiento o controles host personalizados. Para obtener más información, consulte Cómo: Personalizar celdas y columnas en el control DataGridView de Windows Forms ampliando su comportamiento y apariencia.

Estos tipos de columnas se describen de forma más detallada en las secciones siguientes.

DataGridViewTextBoxColumn

DataGridViewTextBoxColumn es un tipo de columna de uso general para su uso con valores basados en texto, como números y cadenas. En el modo de edición, se muestra un control TextBox en la celda activa, lo que permite a los usuarios modificar el valor de la celda.

Los valores de la celda se convierten automáticamente en cadenas para mostrarlos. Los valores introducidos o modificados por el usuario se analizan automáticamente para crear un valor de celda del tipo de datos adecuado. Puede personalizar estas conversiones mediante los eventos CellFormatting y CellParsing del control DataGridView.

El tipo de datos del valor de una celda de una columna se especifica en la propiedad ValueType de la columna.

DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumn se usa con los valores Boolean y CheckState. Los valores Boolean se muestran como casillas de dos o tres estados, según el valor de la propiedad ThreeState. Cuando la columna está enlazada a valores CheckState, el valor de la propiedad ThreeState es true de forma predeterminada.

Normalmente, los valores de una celda de casilla están diseñados para el almacenamiento, como cualquier otro dato, o para realizar operaciones masivas. Si quiere responder inmediatamente cuando los usuarios hacen clic en una celda de casilla, puede controlar el evento CellClick, pero este evento se produce antes de actualizar el valor de la celda. Si necesita el nuevo valor en el momento del clic, una opción es calcular cuál será el valor esperado a partir del valor actual. Otro enfoque consiste en confirmar el cambio inmediatamente y controlar el evento CellValueChanged para responder a él. Para confirmar el cambio cuando se hace clic en la celda, tiene que controlar el evento CurrentCellDirtyStateChanged. En el controlador, si la celda actual es una celda de casilla, llame al método CommitEdit y pase el valor Commit.

DataGridViewImageColumn

DataGridViewImageColumn se usa para mostrar imágenes. Las columnas de imagen se pueden rellenar automáticamente desde un origen de datos, manualmente para las columnas desenlazadas o dinámicamente en un controlador para el evento CellFormatting.

El rellenado automático de una columna de imagen desde un origen de datos funciona con matrices de bytes en varios formatos de imagen, incluidos todos los formatos admitidos por la clase Image y el formato de imagen OLE usado por Microsoft® Access y la base de datos de ejemplo de Northwind.

Rellenar manualmente una columna de imagen es útil cuando quiere proporcionar la funcionalidad de DataGridViewButtonColumn, pero con una apariencia personalizada. Puede controlar el evento DataGridView.CellClick para responder a clics dentro de una celda de imagen.

Rellenar las celdas de una columna de imagen en un controlador para el evento CellFormatting resulta útil cuando se quieren proporcionar imágenes para valores calculados o valores en formatos que no son de imagen. Por ejemplo, puede tener una columna "Riesgo" con valores de cadena como "high", "middle" y "low" que quiera mostrar como iconos. Como alternativa, puede tener una columna "Imagen" que contenga las ubicaciones de las imágenes que se deben cargar en lugar del contenido binario de las imágenes.

DataGridViewButtonColumn

Con DataGridViewButtonColumn, puede mostrar una columna de celdas que contienen botones. Esto resulta útil cuando quiere proporcionar una manera fácil de que los usuarios hagan acciones en determinados registros, como hacer un pedido o mostrar registros secundarios en una ventana independiente.

Las columnas de botón no se generan automáticamente al enlazar datos a un control DataGridView. Para usar columnas de botón, tiene que crearlas manualmente y agregarlas a la colección devuelta por la propiedad DataGridView.Columns.

Puede responder a los clics del usuario en las celdas de botón controlando el evento DataGridView.CellClick.

DataGridViewComboBoxColumn

Con DataGridViewComboBoxColumn, puede mostrar una columna de celdas que contienen cuadros de lista desplegable. Esto resulta útil para introducir datos en campos que solo pueden contener valores concretos, como la columna Categoría de la tabla Productos de la base de datos de ejemplo de Northwind.

Puede rellenar la lista desplegable usada para todas las celdas de la misma manera que rellenaría una lista desplegable ComboBox, ya sea manualmente a través de la colección devuelta por la propiedad Items, o enlazándola a un origen de datos a través de las propiedades DataSource, DisplayMember y ValueMember. Para obtener más información, consulte Control ComboBox.

Puede enlazar los valores de celda reales al origen de datos utilizado por el control DataGridView estableciendo la propiedad DataPropertyName de System.Windows.Forms.DataGridViewComboBoxColumn.

Las columnas de cuadro combinado no se generan automáticamente al enlazar datos a un control DataGridView. Para usar columnas de cuadro combinado, tiene que crearlas manualmente y agregarlas a la colección devuelta por la propiedad Columns.

DataGridViewLinkColumn

Con DataGridViewLinkColumn, puede mostrar una columna de celdas que contienen hipervínculos. Esto resulta útil para los valores de dirección URL en el origen de datos o como alternativa a la columna de botón para comportamientos especiales, como abrir una ventana con registros secundarios.

Las columnas de vínculo no se generan automáticamente al enlazar datos a un control DataGridView. Para usar columnas de vínculo, tiene que crearlas manualmente y agregarlas a la colección devuelta por la propiedad Columns.

Puede responder a los clics del usuario en los vínculos controlando el evento CellContentClick. Este evento es distinto de los eventos CellClick y CellMouseClick, que se producen cuando un usuario hace clic en cualquier parte de una celda.

La clase DataGridViewLinkColumn proporciona varias propiedades para modificar la apariencia de los vínculos antes, durante y después de hacer clic en ellos.

Consulte también