TEMA 9. CONTROLES WINDOWS DE ENLACE A DATOS 9.1. VINCULAR CONTROLES AL CONJUNTO DE DATOS

Documentos relacionados
INSTITUCION EDUCATIVA MANUEL ANGEL ANACHURY AREA: TECNOLOGIA E INFORMATICA

Al entrar en Excel nos aparecerá la siguiente ventana:

UNIDAD 4. MODIFICAR TABLAS DE DATOS

DESCRIPCIÓN GENERAL DE LA APLICACIÓN...

Sistema de Gestión y almacenamiento de archivos en el Campus Virtual

Elementos esenciales de Word

CAPÍTULO 1. INTRODUCCIÓN. CONCEPTOS BÁSICOS

INSTITUCIÓN MANUEL MARÍA SÁNCHEZ Tecnología e Informática Word

GUÍA MODULO VERSIÓN 1 CÓDIGO: EC/001 VIRTUALIZACION FORMACION POR PROYECTOS SOCIEDAD SALESIANA CENTRO DE CAPACITACIÓN Y DE PROMOCIÓN POPULAR

PERIODO 2-1 PRESENTADOR MULTIMEDIA POWERPOINT CONCEPTOS BÁSICOS INTRODUCCIÓN AL PROGRAMA MICROSOFT POWERPOINT

3. CREAR FORMULARIOS 3.2. APLICAR OPCIONES DE DISEÑO DE FORMULARIOS

LABORATORIO Nº 9 TABLAS DINÁMICAS

Registro Electrónico Común (REC) Guía de usuario Presentación de una solicitud con certificado. Versión 1.0

1

Elaboración de Documentos en Procesadores de Textos

Trabajando con Impress

Objetos OLE 1. IMAGEN DE FONDO

Unidad 5. Tablas. La celda que se encuentra en la fila 1 columna 2 tiene el siguiente contenido: 2º Celda

1. Aplica formato a un documento y genera en forma automática el índice del mismo, con eficiencia y eficacia.

Preparación de las CAPÍTULO 6. Cambiar el orden de las diapositivas. Presentaciones con POWER POINT 2000

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 3: Elementos esenciales del formulario

CAPÍTULO 1. ELEMENTOS DE EXCEL

Cómo gestionar el correo procedente de la lista de correo de la Asamblea. Recomendaciones de la Comisión de Comunicación - HOTMAIL

En esta lección vamos a ver más utilidades y opciones sobre la

Microsoft Word. Microsoft Word 2013 SALOMÓN CCANCE. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

APUNTE TABLAS MICROSOFT WORD 2003

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS DREAMWEAVER UNO- PRÁCTICAS DOC RAUL MONROY PAMPLONA

Informática HOT POTATOES

ACCIONES Photoshop. Primero explicaremos brevemente que son las Acciones de Photoshop y cómo utilizar esta interesante utilidad. Acciones Photoshop

Capítulo 8: Añadir Animación a una Presentación

Tema 10: Plataforma Moodle: Primeros Pasos

Estilos y temas 1. CREAR UN ESTILO. amos a ver una serie de herramientas que te ayudarán a aplicar fácilmente formatos y diseños a tus documentos.

TECNOLOGÍA E INFORMÁTICA

CONSIDERACIONES GENERALES DEL FUNCIONAMIENTO DEL PROGRAMA

Cuando no está abierto ningún menú, las teclas activas para poder desplazarse a través de la hoja son:

La Herramienta Redmine para la Administración de Proyectos

Manual Power Point Trabajar con gráficos

Creación de Formularios y Consultas

En la parte inferior de la pantalla se podrá ver el estado de la última copia y la fecha y hora actual.

Guía docente: Cómo crear un test y los tipos de preguntas

Tema 1: Análisis y Diseño de la Aplicación

Para poder comenzar a trabajar con Excel, es necesario considerar los siguientes términos:

Hacemos clic con el ratón para situar el cursor donde queremos que aparezca la tabla. Nos vamos a la barra de Menús, Insertar, Tabla

Manual del gestor Web de la Fundación Picarral

DISEÑO DE PRESENTACIONES EN LA ENSEÑANZA. Diapositivas de diagrama

ACTIVIDADES BASE DE DATOS ACCESS 2007

Escuela Normal Superior Río de Oro (Cesar)

UNIDAD 5. calc OPCIONES AVANZADAS. CURSO: LibreOffice

Importa tus datos a ClassicGes 6 desde otras aplicaciones de gestión

Manual de Excel Avanzado

OPENOFFICE IMPRESS. Creación básica de presentaciones digitales

Base de Datos de Compras. Creación de formularios.

Seleccionamos el programa Excel. Nos aparece la pantalla del programa

Centro de Profesorado Luisa Revuelta (Córdoba) TEMA 3. El ENTORNO DE TRABAJO, MANEJO DE DIAPOSTIVAS

Entorno de trabajo de Excel 2010

Manual Word Plantillas y Formularios

Movimiento rápido en la hoja

Introducción. Word Autor: Viviana M. Lloret Prof. de Matemática e Informática Blog: aulamatic.blogspot.com

Personal. Partes de Trabajo WhitePaper Agosto 2008

Gestión de Grupos y agrupamientos en Moodle

5.1. Eliminar filas duplicadas

Terceros Ekon Sical. Departamento de Informática

Tema 1. Introducción a OpenOffice Writer

FORMATO CONDICIONAL EN EXCEL

Clase 1 Excel

COMBINAR CORRESPONDENCIA

Macros y Visual Basic para Aplicaciones en Excel

MANUAL PREZI. Elaboración: Ing. Jocabed Bautista. 1. INGRESAR A LA PAGINA: prezi.com y dar click en Registrarse

Combinación de correspondencia en Microsoft Office Word 2003

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

* Este archivo sólo pretende ser un complemento a las clases, no sustituye en su totalidad la formación impartida en el aula.

Estos márgenes se definen en el menú Archivo, Configurar página... se nos muestra un cuadro de dialogo como este con tres pestañas:

Cómo subir fotos y recortarlas:

PROYECTO FINAL DE CARRERA Manual de Usuario.

TABLAS WORD La tercer opción es usar el vínculo Dibujar Tabla, aquí se dimensiona la tabla dibujándola con el mouse

. REGISTRO DE ENFERMEDADES RARAS

Manual de usuario Cuadernos web Norma 34.14

11.2. Manual de GTC 2.0: El primer contacto

Vemos, pues, que esta forma de organizar los datos es mucho más potente que utilizando las tabulaciones u otros métodos.

Convertir horario ETSII a PDF.

Manual de ayuda de la herramienta de comunicación privada Correo Interno

9.1. Insertar filas en una hoja

xvsvxcv Manual Microsoft Excel Básico

1.- El contenido inicial. Páginas "en servidor" Póster

2. En el cuadro de diálogo que aparece, selecciona Aplicación de Windows Forms, seguido de ello define el nombre Conexión_Datos y presiona Aceptar.

Aplicación para el Registro de Piscinas de Salud Pública del Servicio Canario de la Salud. Manual de Usuario 1.7

MÓDULO DE ANÁLISIS DE DATOS - GUIA BÁSICA DE USUARIO

Se abrirá un cuadro de diálogo para que escojas el tipo de gráfico que quieres mostrar. Selecciona uno y pulsa Aceptar.

Fórmulas de Competición

Vicerrectoría de Pregrado 1 Universidad de Talca

La comunicación entre usuarios de Skype es totalmente gratuita, a excepción de las llamadas realizadas a teléfonos, las cuales son un servicio pago.

INSTITUCION EDUCATIVA COLEGIO TOLEDO PLATA PLAN DE ÁREA DE TECNOLOGIA E INFORMATICA GRADO 8º

... Bases de datos con Excel CAPÍTULO Creación de una Base de Datos

Tutoriales y Guías de uso con Orientaciones Pedagógicas Entorno Virtual de Aprendizaje Plataforma Blackboard WIKIS

USAR EL PLUG-IN PARA MS OUTLOOK

Tablas en vista hoja de datos

PowerPoint 2010 Edición del contenido

PRÁCTICA 1 - CREACIÓN DE UNA PRESENTACIÓN CON EL ASISTENTE PARA AUTOCONTENIDO

EJEMPLO 2. TABLAS CREAR DESPLEGABLE PARA FILTRAR LOS DATOS

UNIDAD 9 COMBINAR CORRESPONDENCIA

Transcripción:

TEMA 9. CONTROLES WINDOWS DE ENLACE A DATOS 9.1. VINCULAR CONTROLES AL CONJUNTO DE DATOS Hemos visto cómo recuperar datos de un origen de datos directamente mediante adaptadores de datos y lectores. Normalmente, en las aplicaciones, va a ser más frecuente que el usuario trabaje con los datos a través de una interfaz que les facilite la visualización y manipulación de los datos. Como desarrolladores vamos a contar con controles enlazables a datos para crear este tipo de interfaces. Ahora veremos cómo enlazar directamente controles a objetos contenedores de datos, lo que se conoce como Data Binding. Al enlazar los controles a los datos, no sólo vamos a poder visualizar los datos en los controles, sino que podremos contemplar su modificación y actualización. Así, el usuario podrá, desde un formulario de Windows interactuar con los datos desde los controles del formulario. Tipos de enlace a datos Simple. Un enlace a datos simple consiste en el enlace entre un control que muestra un único valor y los datos de un origen. Un ejemplo de este tipo de enlace sería un control TextBox enlazado a un objeto DataColumn de una tabla de un conjunto de datos. 9.1

Complejo. Consiste en vincular a los datos un control que puede mostrar múltiples valores. El ejemplo más típico de este tipo de enlace sería un control DataGridView enlazado a un objeto DataTable de un conjunto de datos. Principales elementos del enlace a datos Vamos a poder enlazar datos a controles no sólo desde orígenes de datos, sino que también podremos enlazar cualquier colección estructurada de datos, como colecciones o propiedades de otros controles. Todos los controles que admiten el enlace de datos tienen una colección de tipo DataBindingsCollection, a la que podremos acceder a través de la propiedad DataBindings. Esta colección está compuesta por objetos de la clase Binding. El objeto Binding nos va a permitir crear un enlace para un control. Al crear el enlace indicaremos la propiedad del control que se enlaza, el objeto que contiene los datos a enlazar y el campo del origen vinculado. Una vez creado el enlace, podemos añadirlo a la colección de DataBindings del control. A continuación puedes ver un sencillo ejemplo en el que se realiza esta operación mediante código. Me.SqlDataAdapter1.Fill(Me.DataSet11, "Agenda") Dim enlace As Binding 'Enlazamos la propiedad Text con el campo Telefono de la tabla Agenda enlace = New Binding("Text", Me.DataSet11.Tables("Agenda"), "Telefono") 'Añadimos el enlace a la colección de enlaces del TextBox. Me.TextBox1.DataBindings.Add(enlace) 9.2

Otro objeto interesante es BindingSource, que encapsula el origen de datos de nuestro formulario y facilita enormemente la manipulación y enlace de los datos. Después veremos cómo a través del IDE de Visual Basic, mediante asistentes, podremos enlazar de forma sencilla controles a datos en tiempo de diseño, así como BindingSource nos ayudará a manipular el conjunto de datos. Para comprender cómo funcionan estos elementos vamos a recurrir a un ejemplo que ponga a trabajar a algunos de ellos. Lo primero, creamos en una nueva aplicación para Windows el siguiente formulario, inicializando paa cada control las propiedades que se indican: Lo siguiente que hacemos es crear un origen de datos y un conjunto de datos basado en él, a través del menú Datos 9.3

Como origen de datos usamos la base de datos nueva.mdf anteriormente creada para nuestra agenda. Llamamos al conjunto de datos DataSetAgenda e incluimos en él la tabla Agenda. Una vez que tenemos el conjunto de datos en nuestro proyecto, podemos vincular nuestros controles (las cajas de texto en nuestro caso) a los campos de datos correspondientes. Para ello, modificamos la propiedad DataBindings de cada caja de texto, creando los enlaces a los campos correspondientes de la tabla Agenda. A continuación vamos a vincular la propiedad Text de la caja de texto Nif con el campo Nif de la tabla Agenda contenida en nuestro conjunto de datos. El proceso con el resto de controles sería el mismo. 9.4

Hacemos los siguiente: Vemos las propiedades de la caja de texto Nif. Nos interesa la propiedad DataBindings, si la desplegamos vemos lo siguiente: Aparecen las propiedades que con más frecuencia se enlazan a datos, Tag y Text. Pulsamos en (Avanzado) para ver la ventan de enlace de datos avanzado. 9.5

En este diálogo veremos a la izquierda todas las propiedades enlazables de la caja de texto Nif. Podemos seleccionar la que nos interese enlazar y después seleccionar los datos a los que queramos enlazar mediante la lista desplegable situada debajo de Enlazar a datos: Elegimos el campo NIF de la tabla Agenda en nuestro conjunto de datos. Tras hacer esta selección se creará automáticamente un objeto de tipo BindingSource que servirá de fuente de datos para el formulario. Tras vincular el primer control, se ha agregado al formulario una instancia del conjunto de datos (DataSetAgenda), una fuente de datos (AgendaBindingSource) y un adaptador de datos (AgendaTableAdapter). 9.6

En la propiedad Text de la caja Nif ha aparecido una marca que indica su vínculo a datos. 9.7

Vinculamos los demás controles de igual forma, seleccionando como origen la fuente de datos AgendaBindingSource recién creada. Al finalizar, si probamos la aplicación, veremos que el formulario muestra los datos del primer registro de la tabla Agenda. Lo siguiente que vamos a hacer es preparar los botones de nuestro formulario para que nos permitan desplazarnos por los registros de la tabla. Para movernos por los registros del origen de datos nos valdremos del objeto de clase BindingSource que tenemos en el formulario ( BindingSourceAgenda ). Este objeto tiene una propiedad llamada Position que indica o establece el índice del elemento actual en la lista subyacente, eso es los datos que engloba. Para avanzar o retroceder esta posición existen cuatro métodos de BindingSource, de los que nos vamos a valer: MoveFirst, MoveLast, MovePrevious, MoveNext. Con ellos nos situamos en el primer registro, el último, avanzamos uno o retrocedemos uno, respectivamente. Entonces, si queremos que el botón nos muestre los datos en el primer registro, añadiremos el siguiente código al evento click del botón Primero : 9.8

Private Sub Primero_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Primero.Click AgendaBindingSource.MoveFirst() End Sub Para ver el último registro al pulsar el botón añadimos el siguiente código al evento click del botón: Private Sub Ultimo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Ultimo.Click AgendaBindingSource.MoveLast() End Sub Avanzamos un registro pulsando Private Sub Siguiente_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Siguiente.Click AgendaBindingSource.MoveNext() End Sub Retrocedemos un registro pulsando Private Sub Anterior_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Anterior.Click AgendaBindingSource.MovePrevious() End Sub 9.9

Ahora, si iniciamos la aplicación, ahora los botones nos permiten navegar por los registros. Como ves, usando BindingSource es muy sencillo moverse por los registros. Basta invocar el método correspondiente para que todas las cajas de texto actualicen sus valores con los correspondientes campos del registro actual. Si editamos alguno de los campos en las cajas de texto, los cambios no se actualizarán automáticamente en el origen de datos. Puede parecerlo, porque si nos desplazamos a otro registro y después volvemos al editado, veremos los valores modificados. Sin embargo, si paramos la aplicación y la volvemos a iniciar, observaremos que el registro conserva los valores inalterados, no ha habido cambios en la base nueva.mdf. Esto sucede porque hemos hecho cambios en el conjunto de datos, no en el propio origen de datos. Recuerda que, al acceder a los datos con DataSets, estamos trabajando con un modelo de datos desconectado. Será necesario realizar, con posterioridad a la edición, la actualización de los datos en la base de datos. Cómo guardar los cambios? Haremos unas modificaciones en la aplicación. Añadimos tres botones, uno para guardar los cambios realizados otro para añadir nuevos registros y otro para borrarlos. Así la aplicación quedará completa y nos permitirá control total de los datos. Llamamos Guardar al botón que se encargará de actualizar los cambios en la base de datos, Añadir al que añadirá un nuevo elemento a la lista subyacente del BindingSource y Borrar al botón que eliminará el elemento actual de la lista subyacente. 9.10

Nuestro formulario ya tiene un aspecto parecido al siguiente: Preparamos el código necesario en estos nuevos botones para que la cosa funcione. El primer botón que vamos a preparar es el botón que añade un nuevo elemento a la lista de registros que maneja nuestro BindingSource. Como ves, basta con usar el método AddNew de AgendaBindingSource. Private Sub Añadir_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Añadir.Click AgendaBindingSource.AddNew() End Sub Para eliminar, existe el método RemoveCurrent, que elimina el elemento en el que estemos situados actualmente. También existen métodos para eliminar un elemento concreto (Remove) o para eliminar el elemento que ocupe cierto índice de la lista (RemoveAt). 9.11

Private Sub Borrar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Borrar.Click AgendaBindingSource.RemoveCurrent() End Sub Todo esto está muy bien, pero, si pruebas la aplicación, verás que los cambios siguen sin reflejarse en la base de datos. Al pulsar el botón que elimina el registro este desaparecerá en nuestra aplicación, pero seguirá en la base de datos. Y si añadimos un nuevo elemento con el botón Añadir nos aparecerán las cajas de texto en blanco para añadir nuevos datos, pero éstos no llegan solos a la base de datos. Queda pues, el último detalle. Tenemos que volcar de vuelta los datos manejados en la aplicación a la base de datos. En el tema anterior ya comentamos que es el adaptador de datos el que se encarga de ello. En el código correspondiente al evento click del botón Guardar puedes ver que es el adaptador de datos el que actualiza los datos en el origen, desde los datos contenidos en el conjunto de datos que maneja la aplicación. Private Sub Actualizar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Actualizar.Click 'Con EndEdit terminamos cualquier edición que pudiera estar produciéndose AgendaBindingSource.EndEdit() 'Usamos Try...Catch para capturar posibles errores producidos durante la ' actualización Try 'Actualiza la BD! AgendaTableAdapter.Update(DataSetAgenda.Agenda) Catch ex As Exception 'Se produjo un error MessageBox.Show(ex.Message, "Excepción", MessageBoxButtons.OK, _ MessageBoxIcon.Warning) Exit Sub End Try MessageBox.Show("Se guardaron los cambios", "Actualizar", _ MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub 9.12

Este ejemplo nos ha permitido ver cómo podemos enlazar controles a un origen de datos, y cómo, desde estos controles, podemos editar, añadir y eliminar datos del mismo. Lo hemos hecho de una forma bastante fácil, pero se pueden utilizar soluciones aún más sencillas y que nos pueden proporcionar resultados con apariencia y opciones más avanzadas. Son controles especialmente pensados para trabajar con datos. 9.2. CONTROLES ESPECÍFICOS PARA TRABAJAR CON DATOS Como ya hemos mencionado antes, existen controles especialmente preparados para tratar datos. A continuación vamos a describir el funcionamiento de dos de ellos: el control DataGridView (o rejilla) y el control BindingNavigator. El primero sirve para presentar registros de datos en una tabla o rejilla y el segundo nos permitirá navegar entre los registros de forma similar al ejemplo que viste en el apartado anterior. Control BindingNavigator Este control funciona exactamente igual que los botones que nos permitían movernos por los registros en el ejemplo del apartado anterior. Consta de una barra de herramientas o ToolStrip, compuesta inicialmente por dos controles, TextBox y Label, para indicar la possición del registro actual, y botones para recorrer, añadir y eliminar registros. Podemos decir que se trata de un control ToolStrip especializado para navegar y manipular controles enlazados a datos en el formulario. A continuación mostramos los controles que incluye la barra de herramientas del control BindingNavigator. Podremos añadir controles creados por nosotros a esta barra, tal como explicábamos para cualquier control ToolStrip. 9.13

La propiedad principal de este control es BindingSource, que establece el origen de los datos. Para probar este control podemos modificar el ejemplo del apartado anterior sustituyendo los botones que habíamos preparado para navegar por los registros por un control BindingNavigator. Por sí solo, este control no guardará los cambios realizados en el origen de datos, por lo que vamos a incorporar un nuevo botón a la barra del BindingNavigator que guarde los cambios. Como supondrás, el código que escribiremos en el evento click de este nuevo ToolStripButton será el mismo que se ejecutaba con el click de nuestro primitivo botón. 9.14

Vayamos por partes. Tras añadir el control BindingNavigator a nuestro formulario deberemos asignar su propiedad BindingSource a la fuente de datos del formulario: AgendaBindingSource. Así quedará vinculado con nuestros datos. Con sólo hacer esto, los botones del control BindingNavigator tendrán funcionalidad completa: ir al primer registro, al último, avanzar, retroceder, añadir y borrar el registro actual del conjunto de datos. 9.15

Ahora añadiremos un botón al control BindingNavigator, tal como haríamos en un control ToolStrip, para guardar los cambios realizados, en el origen de los datos. Lo llamamos GuardarCambios. El código para el evento click de este botón será, como ya hemos dicho, similar al que elaboramos para el ejemplo anterior: Private Sub GuardarCambios_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles GuardarCambios.Click AgendaBindingSource.EndEdit() Try 'Actualiza la BD! AgendaTableAdapter.Update(DataSetAgenda.Agenda) Catch ex As Exception MessageBox.Show(ex.Message, "Excepción", MessageBoxButtons.OK, _ MessageBoxIcon.Warning) Exit Sub End Try MessageBox.Show("Se guardaron los cambios", "Actualizar", _ MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Como ves, disponiendo de una fuente de datos o BindingSource y un control BindingSourceNavigator en nuestro formulario, resulta muy sencillo presentar, manipular y navegar por información procedente de un origen de datos. 9.16

Control DataGridView Este control nos va a permitir presentar los datos en forma de tabla. Podremos, además, personalizar su apariencia y comportamiento en función de nuestras necesidades. Entre otras cosas, será posible permitir al usuario reordenar los datos, añadir, editar, eliminar datos o modificar el aspecto de la tabla (alto de filas, ancho de comunas). De igual forma que pasaba con el control BindingNavigator, podremos vincular un DataGridView con un origen de datos a través de su propiedad DataSource, la cual podremos establecer en tiempo de diseño o durante la ejecución mediante programación. Si el conjunto de datos seleccionado contiene más de una tabla, podremos especificar una en la propiedad DataMember. En tiempo de diseño, la forma más sencilla de configurar la rejilla será a través de su ventana de tareas, desde donde podremos seleccionar su fuente de datos, las columnas a visualizar y establecer las acciones sobre los datos disponibles, entre otras. 9.17

Veamos ahora un ejemplo de cómo configurar un control DataGridView para que muestre los datos de un conjunto de datos. Una vez que hemos añadido el control DataGridView a un formulario, lo más fácil es recurrir a su ventana de tareas. Mediante la opción Elegir origen de datos podremos vincular el control con el origen de datos deseado. Podremos elegir las columnas de la tabla que queremos mostrar con Editar columnas... y Agrega columna.... Además, seleccionaremos aquí si queremos que el usuario tenga la opción de agregar, editar o eliminar registros en la tabla, así como de ordenar los mismos por la columna deseada. Elegimos nuestro origen de datos: 9.18

Igual que ocurría al vincular una caja de texto con un origen de datos, el vínculo con datos del control DataGridView ha provocado que se cree automáticamente un control BindingSource ( AgendaBindingSource ). Como ves, enlazar un control rejilla con un conjunto de datos es bastante sencillo. No debemos olvidar que, al igual que BindingNavigator, este control por sí solo no actualiza los datos en el origen, por lo que será necesario que el programador incorpore los métodos necesarios para realizar esta tarea. Ejemplo. en el manejador del evento CellEndEdit de la rejilla podemos escribir el siguiente código: 'Finaliza la edición de la celda Me.AgendaBindingSource.EndEdit() 'Actualiza en el origen a través del adaptador Me.AgendaTableAdapter.Update(Me.DataSet11.Agenda) Es posible combinar el uso de la rejilla con el control navegador, consiguiendo así desplazarnos por las filas de la tabla rápidamente. Esto es muy útil para grandes tablas de datos. Además, nos facilita añadir y eliminar filas de la tabla con los botones que incorpora. Para usar el BindingNavigator junto al DataGridView bastará con añadirlo al formulario y establecer su propiedad BindingSource a la misma fuente de datos a la que está vinculada la rejilla. A partir de ese momento los datos mostrados en la rejilla estarán sincronizados con las acciones que realicemos con el navegador. 9.19