El control DataGridView es una herramienta fundamental en el desarrollo de aplicaciones con C#, tanto para entornos de escritorio (Windows Forms) como web (ASP.NET GridView). Permite mostrar y manipular grandes cantidades de datos de una manera flexible y personalizable. A menudo, el DataGridView se asocia con bases de datos, pero existen escenarios donde necesitamos poblarlo o interactuar con datos que no provienen directamente de un origen persistente.

En este artículo, exploraremos cómo abordar tareas comunes con el DataGridView basándonos en la información proporcionada, incluyendo la adición de datos sin una base de datos, la implementación de búsquedas dinámicas y la comparación con su predecesor, el control DataGrid.

Llenar un GridView (ASP.NET) sin Base de Datos
Según la información proporcionada, el proceso para agregar datos a un control GridView en ASP.NET sin utilizar directamente una base de datos implica configurar la interfaz de usuario en la página web. Los pasos iniciales descritos son:
En primer lugar, abrir Microsoft Visual Studio (se menciona la versión 2010 en la fuente, pero el concepto es similar en versiones posteriores) y crear un nuevo sitio web ASP.NET.
Una vez creado el sitio, se debe acceder a la vista de diseño de la página web. Allí, se crean o arrastran desde la caja de herramientas los controles necesarios: un control GridView, un control TextBox (presumiblemente para ingresar los datos que se desean agregar) y un control Button (para desencadenar la acción de agregar). Se menciona que se pueden configurar las propiedades de estos controles usando la ventana de propiedades.
Es importante notar que la información proporcionada se limita a la configuración de la interfaz de usuario y no detalla el código en C# necesario para tomar los datos del TextBox y agregarlos programáticamente al GridView en el código detrás (code-behind) del botón. Típicamente, esto implicaría manejar el evento click del botón, leer el valor del TextBox y agregarlo a la fuente de datos del GridView (como un DataTable o una lista) y luego enlazar (bind) esa fuente de datos al GridView. Sin embargo, basándonos estrictamente en la fuente, solo podemos describir la configuración inicial de la interfaz.
Búsqueda Dinámica en DataGridView (Windows Forms)
Una funcionalidad muy útil en las aplicaciones de escritorio es la capacidad de buscar datos directamente en el control DataGridView una vez que ya han sido cargados. La información proporcionada detalla un método para realizar una búsqueda dinámica en un DataGridView de Windows Forms, utilizando datos cargados desde un archivo Excel.
El objetivo es permitir al usuario buscar datos basándose en las columnas del DataGridView de forma dinámica. El enfoque descrito es crear una aplicación sencilla de Windows Forms que pueda tomar un archivo de Excel, mostrar sus datos en un DataGridView y luego permitir la búsqueda basada en los encabezados de las columnas.
Configuración de la Interfaz de Usuario
Se describe la creación de una interfaz de usuario que incluye varios controles: cuatro botones (para navegar/importar archivo, importar, buscar y mostrar todo), dos cajas de texto (una para la ruta del archivo Excel y otra para el término de búsqueda), un ComboBox (para seleccionar la columna en la que buscar), un DataGridView para mostrar los datos y una herramienta OpenFileDialog para seleccionar el archivo.
Carga de Datos desde Excel
La aplicación carga por defecto datos de un archivo Excel específico ('Students Data.xlsx'), pero permite al usuario seleccionar otro archivo mediante un botón 'Browse' (Examinar). Una vez seleccionada la ruta, el botón 'Import Excel File' (Importar Archivo Excel) desencadena la carga de los datos.
La lógica de carga se implementa principalmente en la función LoadData(). Esta función se encarga de:
- Limpiar los elementos existentes en el ComboBox de búsqueda.
- Obtener los datos del archivo Excel y convertirlos a un DataTable utilizando la función
GetTableDataFromXl(). - Asignar este DataTable a la propiedad
DataSourcedel DataGridView. Esta es la propiedad clave para llenar el control con datos. - Actualizar una etiqueta para mostrar el número total de registros cargados.
- Obtener los nombres de las columnas del DataTable y agregarlos como opciones en el ComboBox de búsqueda, seleccionando la primera columna por defecto.
La función GetTableDataFromXl(string XlFile) es responsable de leer el archivo Excel. Determina la versión del archivo (.xls o .xlsx) para usar la cadena de conexión OLE DB adecuada (Microsoft.Jet.OLEDB.4.0 para .xls y Microsoft.ACE.OLEDB.12.0 para .xlsx). Abre la conexión, obtiene el nombre de la primera hoja del libro de trabajo, cierra y vuelve a abrir la conexión para ejecutar una consulta SQL simple (SELECT * From [NombreHoja]) que lee todos los datos de esa hoja. Utiliza un OleDbDataAdapter para llenar el DataTable con los resultados de la consulta. Finalmente, cierra la conexión y devuelve el DataTable.
La carga inicial de datos ocurre cuando el formulario se carga, llamando a LoadData() en el evento Form1_Load.
Implementación de la Búsqueda
El botón 'Search' (Buscar) implementa la funcionalidad de búsqueda dinámica. La lógica reside en su evento click.
La búsqueda se realiza aplicando un filtro a la vista predeterminada del DataTable que está enlazado al DataGridView. Se utiliza la propiedad DefaultView.RowFilter del DataTable. La sintaxis del filtro es un string que especifica la condición de búsqueda. Se construye dinámicamente usando el nombre de la columna seleccionada en el ComboBox ('Search By') y el texto ingresado en la caja de texto de búsqueda ('Search Key').
El formato del filtro es "{0} like '%{1}%'", donde {0} es el nombre de la columna y {1} es el término de búsqueda (escapando las comillas simples para evitar errores de sintaxis en el filtro). La cláusula like '%{1}%' permite buscar el término en cualquier parte del contenido de la celda de la columna especificada. Después de aplicar el filtro, se actualiza el contador de registros mostrados.
Mostrar Todos los Datos
El botón 'Show All' (Mostrar Todos) simplemente recarga los datos originales llamando de nuevo a la función LoadData(), eliminando así el filtro aplicado y mostrando todos los registros del archivo Excel.
Flexibilidad del Método
La fuente destaca que este método de búsqueda es flexible, ya que no depende de un formato de datos o columna específico. Puede aceptar cualquier tipo de datos y permite cargar cualquier archivo Excel, creando los criterios de búsqueda dinámicamente a partir de los encabezados de sus columnas.

DataGridView vs DataGrid: Evolución y Diferencias
El control DataGridView es la evolución y el reemplazo del control DataGrid en Windows Forms. Aunque DataGrid se mantiene por compatibilidad con versiones anteriores y necesidades muy específicas, el DataGridView es, con diferencia, el control recomendado para casi todos los propósitos.
La principal razón para preferir DataGridView es que ofrece un gran número de características básicas y avanzadas que simplemente no existen en el control DataGrid. Además, su arquitectura está diseñada para ser mucho más fácil de extender y personalizar.
La fuente proporciona una tabla comparativa (que representaremos aquí como una lista de puntos clave) destacando algunas de las diferencias primarias:
| Característica | DataGrid | DataGridView |
|---|---|---|
| Reemplazo de texto de celda | No | Sí |
| Ordenación por estado de columna | No | Sí |
| Modo de ajuste automático de columnas/filas por contenido | Limitado/No | Sí |
| Congelar columnas/filas | No | Sí |
| Filas de encabezado múltiples | No | Sí |
| Filas de pie de página | No | Sí |
| Soporte para celdas enlazadas/no enlazadas en la misma columna | No | Sí |
| Columnas personalizables | Limitado | Arquitectura extensible |
| Estilos de celda configurables en múltiples niveles | Limitado | Sí (control, columna, fila, celda) |
| Copiar/Pegar | No | Sí |
| Errores de datos visuales | No | Sí |
| Modo virtual (gestión de datos bajo demanda) | No | Sí |
La única característica significativa que el DataGrid tiene y el DataGridView no es la capacidad de mostrar información jerárquica (de dos tablas relacionadas en una relación maestro/detalle) dentro de un *único* control. Para lograr esto con DataGridView, se necesitarían *dos* controles, uno para la tabla maestra y otro para la tabla de detalle.
Actualización de DataGrid a DataGridView
Si se tienen aplicaciones existentes que usan DataGrid en escenarios de enlace de datos simples sin personalizaciones complejas, generalmente es posible reemplazar el DataGrid por un DataGridView directamente. Ambos controles usan la arquitectura estándar de enlace de datos de Windows Forms, por lo que el DataGridView debería mostrar los datos enlazados sin configuración adicional. Sin embargo, se recomienda considerar el uso del componente BindingSource, que puede mejorar el enlace de datos.
Debido a que el DataGridView tiene una arquitectura completamente nueva, no hay una forma directa de convertir las personalizaciones hechas para DataGrid para que funcionen con DataGridView. Muchas de estas personalizaciones ya no son necesarias en DataGridView debido a sus características incorporadas. Si se crearon tipos de columna personalizados para DataGrid, estos deberán ser reimplementados usando la nueva arquitectura de DataGridView.
¿Qué Propiedad de un DataGridView se Usa para Llenarlo con Datos?
Como se mencionó anteriormente en la sección de búsqueda dinámica, la propiedad principal utilizada para llenar un control DataGridView con datos en C# es la propiedad DataSource. Puedes asignar a esta propiedad un objeto que implemente interfaces de enlace de datos, como un DataTable, un DataSet, una lista de objetos (List<T>), un BindingSource, entre otros.
Una vez que se asigna la fuente de datos a la propiedad DataSource, el DataGridView automáticamente crea columnas (si no se han definido manualmente) y filas para mostrar los datos contenidos en el objeto asignado.
Adicionalmente, se menciona la propiedad AutoSizeColumnsMode. Esta propiedad se utiliza para controlar cómo las columnas del DataGridView ajustan su ancho. Asignarle el valor DataGridViewAutoSizeColumnsMode.Fill hace que las columnas se redimensionen para llenar el ancho disponible del control, asegurando que no haya espacio en blanco y que las columnas utilicen el espacio de manera eficiente. Esto es útil para mejorar la presentación de los datos.
Preguntas Frecuentes
P: ¿Puedo agregar datos manualmente a un DataGridView sin usar una base de datos?
R: Sí, es posible. Aunque la información proporcionada se centra en la configuración de interfaz para ASP.NET GridView sin detallar el código, generalmente se puede agregar datos a una fuente de datos en memoria (como un DataTable o una lista) y luego asignar esa fuente de datos a la propiedad DataSource del DataGridView. También es posible, aunque menos común para grandes volúmenes, agregar filas directamente si el control no está enlazado a datos o si se gestiona en modo virtual.
P: ¿Cómo implemento la búsqueda en un DataGridView?
R: Un método común, como se describe para Windows Forms, es utilizar la propiedad DefaultView.RowFilter de la fuente de datos (por ejemplo, un DataTable) enlazada al DataGridView. Esto permite aplicar filtros dinámicos basados en criterios especificados por el usuario.
P: ¿Cuál es la principal diferencia entre DataGrid y DataGridView?
R: DataGridView es el sucesor mejorado de DataGrid. Ofrece muchas más características integradas (como congelar columnas, pies de página, modos de ajuste automático avanzados, copiar/pegar) y una arquitectura más extensible. La única ventaja de DataGrid es su capacidad nativa para mostrar relaciones maestro/detalle en un solo control.
P: ¿Qué propiedad uso para mostrar datos en DataGridView?
R: La propiedad clave es DataSource. Se le asigna el objeto que contiene los datos a mostrar (DataTable, lista, etc.).
P: ¿Necesito código complejo para cargar datos desde Excel a DataGridView?
R: Según el ejemplo proporcionado, se requiere código para leer el archivo Excel (usando OLE DB, por ejemplo), convertir los datos a un formato como DataTable, y luego asignar ese DataTable a la propiedad DataSource del DataGridView. La complejidad depende de la fuente de datos y el formato, pero herramientas como OleDbDataAdapter simplifican el proceso para formatos como Excel.
En resumen, el control DataGridView es una herramienta versátil y potente en C# para la visualización y manipulación de datos. Aunque comúnmente se usa con bases de datos, se puede poblar y buscar datos desde otras fuentes. Su arquitectura moderna y amplias características lo hacen muy superior a su predecesor, el DataGrid, y la propiedad DataSource es fundamental para conectarlo con la información que deseamos presentar al usuario.
Si quieres conocer otros artículos parecidos a DataGridView en C#: Llenar, Buscar y Diferencias puedes visitar la categoría Programación.

Aprende mas sobre MySQL