Enlace de controles de Windows Forms a datos en aplicaciones de .NET Framework

Nota:

Los conjuntos de datos y las clases relacionadas son tecnologías heredadas de .NET Framework de principios de la década de 2000 que permiten a las aplicaciones trabajar con datos en memoria mientras están desconectadas de la base de datos. Son especialmente útiles para las aplicaciones que permiten a los usuarios modificar los datos y conservar los cambios en la base de datos. Aunque los conjuntos de datos han demostrado ser una tecnología de gran éxito, se recomienda que las nuevas aplicaciones de .NET usen Entity Framework Core. Entity Framework proporciona una manera más natural de trabajar con datos tabulares como modelos de objetos y tiene una interfaz de programación más sencilla.

Para mostrar datos a los usuarios de la aplicación, puede enlazarlos a Windows Forms. Puede arrastrar los elementos de la ventana Orígenes de datos al Diseñador de Windows Forms en Visual Studio para crear estos controles enlazados a datos.

Data Source drag operation

Sugerencia

Si la ventana Orígenes de datos no está visible, puede abrirla seleccionando Ver>Otras ventanas> Orígenes de datos o presionando Mayús+Alt+D. Debe tener un proyecto abierto en Visual Studio para ver la ventana Orígenes de datos.

Antes de arrastrar elementos, puede establecer el tipo de control al que desea enlazar. Aparecen valores diferentes en función de si se elige la propia tabla o una columna individual. También puede escribir valores personalizados. En una tabla, Detalles significa que cada columna está enlazada a un control independiente.

Bind data source to DataGridView

Controles BindingSource y BindingNavigator

El componente BindingSource sirve para dos propósitos. En primer lugar, proporciona una capa de abstracción cuando se enlazan los controles a los datos. Los controles del formulario se enlazan al componente BindingSource en lugar de directamente a un origen de datos. Segundo, puede administrar una colección de objetos. Al agregar un tipo a BindingSource, se crea una lista de ese tipo.

Para obtener más información acerca del componente BindingSource, vea:

El control BindingNavigator control proporciona una interfaz de usuario para navegar por los datos mostrados en una aplicación Windows.

Enlazar a datos en un control DataGridView

Para un control DataGridView, toda la tabla se enlaza a ese único control. Al arrastrar un DataGridView al formulario, también aparece una franja de herramientas para navegar por los registros (BindingNavigator). Aparece un componente DataSet, TableAdapter, BindingSource y BindingNavigator en la bandeja de componentes. En la ilustración siguiente, también se agrega un TableAdapterManager porque la tabla Customers tiene una relación con la tabla Orders. Estas variables se declaran en el código generado automáticamente como miembros privados en la clase de formulario. El código generado automáticamente para rellenar DataGridView se encuentra en el Form_Load controlador de eventos. El código para guardar los datos para actualizar la base de datos se encuentra en el Save controlador de eventos de BindingNavigator. Puede mover o modificar este código según sea necesario.

GridView with BindingNavigator

Puede personalizar el comportamiento de DataGridView y BindingNavigator haciendo clic en la etiqueta inteligente de la esquina superior derecha de cada una de ellas:

DataGridView and Binding Navigator smart tags

Si los controles que necesita la aplicación no están disponibles en la ventana Orígenes de datos, puede agregar controles. Para obtener más información, consulte Agregar controles personalizados a la ventana Orígenes de datos.

También puede arrastrar elementos desde la ventana Orígenes de datos a los controles que ya están en un formulario para enlazar el control a los datos. Un control que ya está enlazado a los datos tiene sus enlaces de datos restablecido al elemento más recientemente arrastrado a él. Para ser destinos de colocación válidos, los controles deben ser capaces de mostrar el tipo de datos subyacente del elemento arrastrado a él desde la ventana Orígenes de datos. Por ejemplo, no es válido arrastrar un elemento que tiene un tipo de datos de DateTime a CheckBox porque CheckBox no es capaz de mostrar una fecha.

Enlace a datos en controles individuales

Al enlazar un origen de datos a Detalles, cada columna del conjunto de datos se enlaza a un control independiente.

Bind data source to details

Importante

Tenga en cuenta que, en la ilustración anterior, se arrasta desde la propiedad Órdenes de la tabla Clientes, no desde la tabla Órdenes. Al enlazar a la propiedad Customer.Orders, los comandos de navegación realizados en DataGridView se reflejan inmediatamente en los controles de detalles. Si arrastra desde la tabla Órdenes, los controles seguirán enlazados al conjunto de datos, pero no se sincronizarán con DataGridView.

En la ilustración siguiente se muestran los controles enlazados a datos predeterminados que se agregan al formulario después de que la propiedad Órdenes de la tabla Clientes esté enlazada a Detalles en la ventana Orígenes de datos.

Orders table bound to details

Tenga en cuenta también que cada control tiene una etiqueta inteligente. Esta etiqueta habilita las personalizaciones que solo se aplican a ese control.