Cómo configurar fácilmente un control DataGrid en tiempo de diseño
Por Enrique Martínez Montejo
Última revisión: 21/09/2003
 

A continuación voy a explicar la manera de insertar un control DataGrid en un formulario Windows Forms, y configurarlo en tiempo de diseño para enlazarlo a los datos, creando para ello un adaptador de datos mediante el asistente que nos proporciona el entorno de Visual Studio .NET.

Una vez que ya tengamos creado un nuevo proyecto Windows Forms, lo primero que vamos hacer será crear un adaptador de datos u objeto DataAdapter.

Configurar una conexión de datos y un adaptador de datos

El adaptador de datos se representa mediante un objeto DataAdapter el cual alberga cuatro objetos Command de ADO .NET con las instrucciones y parámetros SQL necesarios para realizar una de las cuatro acciones SQL principales sobre una base de datos, como son las siguientes instrucciones del Lenguaje de Manipulación de Datos: SELECT, INSERT, UPDATE y DELETE. El objeto DataAdapter expone los cuatro objetos Command anteriores en forma de sus propias propiedades de objeto, denominadas respectivamente SelectCommand, InsertCommand, UpdateCommand y DeleteCommand.

El Asistente para la configuración del adaptador de datos le ayudará a definir las instrucciones SQL necesarias, creando igualmente una conexión con la base de datos en el caso de que ésta última fuera necesaria.

A continuación explicaré los pasos necesarios para conectarse a una base de datos Access 2003 y crear un adaptador de datos:

  1. Seleccione la ficha Datos del cuadro de Herramientas y arrastre un objeto OleDbDataAdapteral formulario. Una vez insertado el objeto en el formulario se abrirá el Asistente para la configuración del adaptador de datos, que le ayudará a crear la conexión y el objeto DataAdapter propiamente dicho.

  2. En el segundo panel del asistente, pulse sobre el botón Nueva conexión para crear la cadena de conexión con la base de datos que deseamos utilizar. Para Access utilizaremos el proveedor Microsoft.Jet.OLEDB.4.0.

  3. Si hemos utilizado el proveedor para Access, en la tercera pantalla del asistente sólo podremos utilizar la opción Usar instrucciones SQL, por lo que pasamos a la siguiente pantalla.

  4. En la cuarta pantalla, o escribimos directamete la instrucción SQL o llamamos al Generador de consultas para escribir la consulta de una forma más cómoda.

  5. Una vez escrita la consulta SQL pasamos a la siguiente pantalla, donde comprobaremos que el asistente ha realizado las tareas correctamente, pulsando el botón Finalizar para aplicar la configuración elegida al adaptador.

  6. Cuando el asistente haya concluido su trabajo, podremos observar que disponemos de una conexión (OleDbConnection1) con la información necesaria para obtener acceso a la base de datos. También nos aparecerá un adaptador de datos (OleDBDataAdapter1), que contiene la consulta que define la tabla y los campos de la base de datos a la que vamos a tener acceso. Si posteriormente deseamos incluir o eliminar campos de la consulta, una vez que tengamos seleccionado el adaptador de datos, pulsaremos la tecla de función F4 para tener acceso a la ventana de propiedades del objeto. En ella, seleccionaremos la colección TableMapping, haciendo clic sobre el botón de puntos para que nos aparezca el cuadro de diálogo Asignaciones de tablas.

Crear el conjunto de datos

Un conjunto de datos básicamente es un contenedor, una caché, que contiene los registros con los que vamos a interactuar, siendo una instancia de la clase DataSet la cual se basa en un esquema XML que describe los elementos de la clase, como la tabla, campos y restricciones. Al crear el conjunto de datos, se creará un archivo de esquema XML, que por defecto tendrá el nombre del conjunto de datos y la extensión *.xsd.

Una vez creada la conexión y el adaptador de datos, lo único que nos queda por hacer es generar el conjunto de datos, cosa ésta que Visual Studio lo hará de manera automática basándose en la consulta que hemos especificado para el adaptador de datos.

  1. En el menú Datos seleccione Generar conjunto de datos, apareciendo a continuación el cuadro de diálogo del mismo nombre.

  2. Seleccione la opción Nuevo y el nombre del conjunto de datos, que por defecto será DataSet1. Puede especificar cualquier nombre, teniendo en cuenta que Visual Studio le añadirá un número al final del nombre elegido, creando igualmente un nuevo archivo de esquema XML con el nombre del conjunto de datos seleccionado y la extensión *.xsd, el cual podrá verlo en el Explorador de soluciones.

  3. En la lista situada bajo Elegir las tablas que desea agregar al conjunto de datos, deberá de aparecer seleccionada la tabla elegida al generar el adaptador de datos.

  4. Asegúrese de que la casilla Agregar este conjunto de datos al diseñador esté activada y pulse Aceptar. Automáticamente Visual Studio añadirá una instancia al formulario de la nueva clase del conjunto de datos creado.

Ya tenemos todo los necesario para conectarnos con una base de datos y almacenar la información en el conjunto de datos creado. Por último, sólo nos queda añadir un control DataGrid al formulario y configurarlo para poder visualizar los datos.

Añadir un control DataGrid

Para agregar un control DataGrid al formulario:

  1. Seleccione la ficha Windows Forms del cuadro de herramientas y haga doble clic sobre el control DataGrid.

  2. Una vez que lo haya redimensionado, pulsa la tecla de función F4 para acceder a la ventana de propiedades del control.

  3. En la propiedad DataSource seleccione como origen de datos el nombre del conjunto de datos creado.

  4. En la propiedad DataMember seleccione la tabla especificada en el adaptador de datos.

Estas son las dos únicas propiedades que necesita configurar para enlazar la tabla del conjunto de datos al control DataGrid.

Llenar el control DataGrid

A diferencia de lo que ocurría en Visual Basic 6.0, el control DataGrid de Visual Basic .NET no se rellena automáticamente, a pesar de que éste lo hayamos enlazado en tiempo de diseño a un conjunto de datos. Por tanto, no nos queda más remedio que utilizar el método Fill del adaptador de datos, al cuál le indicaremos el conjunto de datos que deseamos llenar en el control DataGrid.

Para ello utilizaremos el evento Load del formulario donde se encuentra incluido el DataGrid:

Private Sub Form1_Load(ByVal sender As System.Object, _
                       ByVal e As System.EventArgs) Handles MyBase.Load

    ' Rellenamos el control DataGrid
    OleDbDataAdapter1.Fill(DataSet1)

End Sub

Actualizar la base de datos

Otra diferencia entre utilizar el objeto DataGrid de Visual Basic 6.0 y el de Visual Basic .NET, radica en que en éste último los datos no se actualizan automáticamente, sino que hay que indicarle al adaptador de datos que actualice los mismos en la base de datos.

Cuando el usuario modifica algún dato del control DataGrid, los cambios se guardan en el conjunto de datos, y ésto es así porque en los formularios Windows Forms, la arquitectura de enlace de datos escribe los valores de los controles enlazados a datos en las filas del conjunto de datos a los que están enlazados, por lo que las actualizaciones requieren dos fases:

  1. Una vez modificado el control enlazado a datos, los datos se pasan al conjunto de datos.

  2. El adaptador de datos examina cada registro de la tabla indicada en el conjunto de datos para ver si se ha producido algún cambio, enviando el comando Update, Insert o Delete apropiado a la base de datos mediante el método Update del adaptador de datos.

Para actualizar la base de datos, inserte un control Button al formulario, e invoque el método Update del adaptador de datos de la siguiente manera:

Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click

    ' Actualizamos los datos
    OleDbDataAdapter1.Update(DataSet1)
   
    ' Mostramos un mensaje
    MessageBox.Show("Se ha actualizado la base de datos.")

End Sub

 

Otros enlaces de interés:

Indice de Ejemplos de ADO .NET

Cómo configurar un control DataGrid en tiempo de ejecución


Enrique Martínez Montejo - 2003

NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.

NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.