Tipos de columnas en el control DataGridView de formularios Windows Forms

Actualización: noviembre 2007

El control DataGridView utiliza varios tipos de columna para mostrar información y permitir a los usuarios modificarla o agregarla.

Cuando se enlaza un control DataGridView y se establece la propiedad AutoGenerateColumns en true, las columnas se generan automáticamente mediante los tipos de columna predeterminados, adecuados a los tipos de datos contenidos en los orígenes de datos enlazados.

También se pueden crear instancias de cualquier clase de columna y agregarlas a la colección devuelta por la propiedad Columns. Se pueden crear estas instancias para utilizarlas como columnas sin enlazar o se pueden enlazar manualmente. Por ejemplo, las columnas enlazadas manualmente resultan muy útiles cuando se quiere reemplazar una columna de un tipo, generada automáticamente, con 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 utiliza con valores basados en texto. Se genera automáticamente al enlazarse a los números y cadenas.

DataGridViewCheckBoxColumn

Se utiliza con valores Boolean y CheckState. Se genera automáticamente al enlazarse a valores de estos tipos.

DataGridViewImageColumn

Se utiliza para mostrar imágenes. Se genera automáticamente al enlazarse a las matrices de bytes, objetos Image o bien objetos Icon.

DataGridViewButtonColumn

Se utiliza para mostrar botones en las celdas. No se genera automáticamente al crear el enlace. Normalmente se utiliza como columnas sin enlazar.

DataGridViewComboBoxColumn

Se utiliza para mostrar las listas desplegables en celdas. No se genera automáticamente al crear el enlace. Normalmente, se enlazan a datos manualmente.

DataGridViewLinkColumn

Se utiliza para mostrar enlaces en las celdas. No se genera automáticamente al crear el enlace. Normalmente, se enlazan a datos manualmente.

El tipo de columna personalizado

Puede crear su propia clase de columnas que heredan la clase DataGridViewColumn o cualquiera de sus clases derivadas para proporcionar una apariencia o un comportamiento personalizados, o controles alojados. Para obtener más información, vea Cómo: Personalizar celdas y columnas en el control DataGridView de formularios Windows Forms ampliando su comportamiento y apariencia

En las secciones siguientes se describen estos tipos de columna de forma más detallada.

DataGridViewTextBoxColumn

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

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

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

DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumn se utiliza con los valores Boolean y CheckState. Los valores de Boolean se muestran como casillas de verificación de dos o tres estados, según el valor de la propiedad ThreeState. Cuando la columna se enlaza a los valores de CheckState, el valor de la propiedad ThreeState es true de manera predeterminada.

Normalmente, los valores de celda de la casilla de verificación están pensados para el almacenamiento, como cualquier otro dato, o para realizar las operaciones masivas. Si se quiere responder inmediatamente cuando el usuario hace clic en la celda de la casilla de verificación, se puede controlar el evento CellClick, pero éste ocurrirá antes de que se actualice el valor de celda. Si se necesita el nuevo valor en el momento en el que usuario hace clic, una opción consiste en calcular qué valor esperado se basará en el valor actual. Otro método es confirmar inmediatamente el cambio y controlar el evento CellValueChanged para responderle. Para confirmar el cambio cuando se hace clic en la celda, se debe controlar el evento CurrentCellDirtyStateChanged. En el controlador, si la celda actual es una celda de la casilla de verificación, llame al método CommitEdit y pase el valor Commit.

DataGridViewImageColumn

DataGridViewImageColumn se utiliza para mostrar imágenes. Las columnas de imágenes se pueden rellenar automáticamente desde un origen de datos, rellenar manualmente para columnas sin enlazar o bien dinámicamente en un controlador para el evento CellFormatting.

El rellenado automático de una columna de imágenes desde un origen de datos funciona con matrices de bytes en una variedad de formatos de imagen, incluso todos los formatos que admiten la clase Image y el formato OLE Picture utilizado por Microsoft® Access y la base de datos de ejemplo Northwind.

El rellenado manual de una columna de imagen resulta muy útil cuando se desea proporcionar la funcionalidad de DataGridViewButtonColumn, pero con un aspecto personalizado. Puede controlar el evento DataGridView.CellClick para responder a los clics dentro de una celda de imagen.

El rellenado de las celdas de una columna de imagen en un controlador para el evento CellFormatting resulta muy útil cuando se desea proporcionar imágenes para valores calculados o valores en formatos que no sean de imagen. Por ejemplo, puede tener una columna "Riesgo" con valores de cadena como "high", "middle" y "low", que desea mostrar como iconos. Otra posibilidad es tener una columna "Imagen" que contiene las ubicaciones de las imágenes que deben cargarse en lugar de su contenido binario.

DataGridViewButtonColumn

Con DataGridViewButtonColumn puede mostrar una columna de celdas que contienen botones. Esto es útil cuando desea facilitar a los usuarios la realización de acciones en registros determinados, tales como colocar un orden o mostrar registros secundarios en otra ventana.

Las columnas de botón no se generan automáticamente cuando se enlaza a datos un DataGridView. Para utilizar las columnas de botón, debe crearlas manualmente y agregarlas a la colección devuelta por la propiedad DataGridView.Columns.

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

DataGridViewComboBoxColumn

Con DataGridViewComboBoxColumn, puede mostrar una columna de celdas que contiene los cuadros de lista desplegables. Esto es útil para la entrada de datos en campos que sólo pueden contener valores determinados, como la columna Category de la tabla Products en la base de datos de ejemplo Northwind.

Se puede rellenar la lista desplegable utilizada para todas las celdas de la misma forma que se rellenaría una lista desplegable de ComboBox, ya sea manualmente a partir 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, vea ComboBox (Control, formularios Windows Forms).

Se pueden 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 cuando se enlaza a datos un DataGridView. Para utilizar las columnas de cuadro combinado, debe 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 es útil para los valores de direcciones URL en el origen de datos o como alternativa a la columna de botón si se desean comportamientos especiales, como la apertura de una ventana con registros secundarios.

Las columnas de vínculo no se generan automáticamente cuando se enlaza a datos un DataGridView. Para utilizar las columnas de vínculo, debe crearlas manualmente y agregarlas a la colección devuelta por la propiedad Columns.

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

La clase DataGridViewLinkColumn proporciona varias propiedades para modificar el aspecto de vínculos antes, durante y después de haber hecho clic.

Vea también

Tareas

Cómo: Mostrar imágenes en celdas del control DataGridView de formularios Windows Forms

Cómo: Trabajar con columnas de imágenes en el control DataGridView de formularios Windows Forms

Referencia

DataGridView

DataGridViewColumn

DataGridViewButtonColumn

DataGridViewCheckBoxColumn

DataGridViewComboBoxColumn

DataGridViewImageColumn

DataGridViewTextBoxColumn

DataGridViewLinkColumn

Otros recursos

DataGridView (Control, formularios Windows Forms)

Personalizar el control DataGridView de formularios Windows Forms