Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con el BindingSource componente, puede enlazar universalmente todos los controles de Windows Forms a orígenes de datos.
El BindingSource componente simplifica el proceso de enlace de controles a un origen de datos y proporciona las siguientes ventajas sobre el enlace de datos tradicional:
Habilita el enlace en tiempo de diseño a objetos empresariales.
Encapsula la CurrencyManager funcionalidad y expone CurrencyManager eventos en tiempo de diseño.
Simplifica la creación de una lista que admita la IBindingList interfaz proporcionando una notificación de cambios de lista para los orígenes de datos que no admiten de forma nativa la notificación de cambios de lista.
Proporciona un punto de extensibilidad para el IBindingList.AddNew método .
Proporciona un nivel de direccionamiento indirecto entre el origen de datos y el control . Este direccionamiento indirecto es importante cuando el origen de datos puede cambiar en tiempo de ejecución.
Interopera con otros controles de Windows Forms relacionados con los datos, específicamente los controles BindingNavigator y DataGridView.
Por estos motivos, el BindingSource componente es la manera preferida de enlazar los controles de Windows Forms a los orígenes de datos.
Características de BindingSource
El BindingSource componente proporciona varias características para enlazar controles a datos. Con estas características, puede implementar la mayoría de los escenarios de enlace de datos sin casi ninguna codificación por su parte.
El BindingSource componente lo logra proporcionando una interfaz coherente para acceder a muchos tipos diferentes de orígenes de datos. Esto significa que usas el mismo procedimiento para vincular a cualquier tipo. Por ejemplo, puede adjuntar la propiedad DataSource a un DataSet o a un objeto de negocio y, en ambos casos, se usa el mismo conjunto de propiedades, métodos y eventos para manipular el origen de datos.
La interfaz coherente proporcionada por el BindingSource componente simplifica considerablemente el proceso de enlace de datos a los controles. En el caso de los tipos de origen de datos que proporcionan notificaciones de cambios, el BindingSource componente comunica automáticamente los cambios entre el control y el origen de datos. En el caso de los tipos de origen de datos que no proporcionan notificaciones de cambios, se proporcionan eventos que permiten generar notificaciones de cambios. En la lista siguiente se muestran las características admitidas por el BindingSource componente:
Indirección.
Administración de monedas.
Presentación del origen de datos como una lista.
BindingSource como un IBindingList.
Creación de elementos personalizados.
Creación de elementos transaccionales.
Compatibilidad con IEnumerable.
Soporte en tiempo de diseño.
Métodos estáticos ListBindingHelper .
Ordenar y filtrar con la IBindingListView interfaz .
Integración con BindingNavigator.
Indirección
El BindingSource componente proporciona un nivel de direccionamiento indirecto entre un control y un origen de datos. En lugar de enlazar un control directamente a un origen de datos, se enlaza el control a BindingSourcey se adjunta el origen de datos a la BindingSource propiedad del DataSource componente.
Con este nivel de direccionamiento indirecto, puede cambiar el origen de datos sin restablecer el enlace de control. Esto le ofrece las siguientes funcionalidades:
Puede adjuntar el BindingSource a diferentes orígenes de datos mientras conserva los enlaces de control actuales.
Puede cambiar los elementos del origen de datos y notificar a los controles enlazados. Para obtener más información, vea Cómo: Reflejar las actualizaciones de la fuente de datos en un control de Windows Forms con el BindingSource.
Puede enlazar a un Type en lugar de a un objeto en memoria. Para obtener más información, vea Cómo: Enlazar un control de formularios Windows Forms a un tipo. A continuación, puede enlazar a un objeto en tiempo de ejecución.
Administración de monedas
El componente BindingSource implementa la interfaz ICurrencyManagerProvider para gestionar la administración de monedas por usted. Con la ICurrencyManagerProvider interfaz, también puede acceder al administrador de divisas para un BindingSource, además del administrador de divisas para otro BindingSource enlazado al mismo DataMember.
El BindingSource componente encapsula la CurrencyManager funcionalidad y expone las propiedades y eventos más comunes CurrencyManager . En la tabla siguiente se describen algunos de los miembros relacionados con la administración de monedas.
CurrencyManager Propiedad obtiene el administrador de divisas asociado con BindingSource.
GetRelatedCurrencyManager método Si hay otro BindingSource enlazado al miembro de datos especificado, obtiene su administrador de monedas.
Current property Obtiene el elemento actual del origen de datos.
Position property Obtiene o establece la posición actual en la lista subyacente.
EndEdit método Aplica cambios pendientes al origen de datos subyacente.
CancelEdit method Cancela la operación de edición actual.
Origen de datos como lista
El BindingSource componente implementa las IBindingListView interfaces y ITypedList . Con esta implementación, puede usar el BindingSource propio componente como origen de datos, sin ningún almacenamiento externo.
Cuando el BindingSource componente está asociado a un origen de datos, expone el origen de datos como una lista.
La DataSource propiedad se puede establecer en varios orígenes de datos. Estos incluyen tipos, objetos y listas de tipos. El origen de datos resultante se expondrá como una lista. En la tabla siguiente se muestran algunos de los orígenes de datos comunes y la evaluación de lista resultante.
Propiedad Fuente de Datos | Enumerar los resultados |
---|---|
Referencia nula (Nothing en Visual Basic) |
Un IBindingList vacío de objetos. Al agregar un elemento, se establece la lista en el tipo del elemento agregado. |
Referencia nula (Nothing en Visual Basic) con DataMember establecido. |
No soportado; eleva ArgumentException. |
Tipo que no es una lista o objeto de tipo "T" | Un IBindingList vacío de tipo "T". |
Instancia de matriz | Un IBindingList que contiene los elementos de la matriz. |
IEnumerable instancia | Un IBindingList que contiene los IEnumerable elementos |
Instancia de lista que contiene un elemento del tipo "T" | Instancia IBindingList que contiene el tipo "T". |
Además, DataSource se puede configurar en otros tipos de lista, como IListSource y ITypedList, y BindingSource los controlará adecuadamente. En este caso, el tipo contenido en la lista debe tener un constructor sin parámetros.
BindingSource como IBindingList
El componente BindingSource proporciona miembros para acceder y manipular los datos subyacentes como un IBindingList. En la tabla siguiente se describen algunos de estos miembros.
Miembro | Descripción |
---|---|
Propiedad List | Obtiene la lista resultante de la evaluación de las propiedades DataSource o DataMember. |
método AddNew | Agrega un nuevo elemento a la lista subyacente. Se aplica a los orígenes de datos que implementan la IBindingList interfaz y permiten agregar elementos (es decir, la AllowNew propiedad se establece en true ). |
Creación de elementos personalizados
Puede manejar el evento AddingNew para proporcionar su propia lógica para la creación de elementos. El AddingNew evento se produce antes de que se agregue un nuevo objeto a .BindingSource Este evento se genera después de llamar al AddNew método , pero antes de agregar el nuevo elemento a la lista subyacente. Al controlar este evento, puede proporcionar un comportamiento de creación de elementos personalizado sin derivar de la BindingSource clase . Para obtener más información, vea Cómo personalizar la adición de elementos con Windows Forms BindingSource.
Creación de elementos transaccionales
El componente BindingSource implementa la interfazICancelAddNew, que permite la creación de elementos transaccionales. Después de crear provisionalmente un nuevo elemento mediante una llamada a AddNew, la adición se puede confirmar o revertir de las maneras siguientes:
El EndNew método confirmará explícitamente la adición pendiente.
Al realizar otra operación de recopilación, como una inserción, eliminación o movimiento, se confirmará implícitamente la adición pendiente.
El CancelNew método revertirá la adición pendiente si el método aún no ha sido confirmado.
Compatibilidad con IEnumerable
El BindingSource componente permite enlazar controles a orígenes IEnumerable de datos. Con este componente, puede enlazar a un origen de datos como .System.Data.SqlClient.SqlDataReader
Cuando se asigna un origen de datos IEnumerable al componente BindingSource, BindingSource crea un IBindingList y agrega el contenido del origen de datos IEnumerable a la lista.
compatibilidad con Design-Time
Algunos tipos de objeto no se pueden crear en tiempo de diseño, como objetos creados a partir de una clase de fábrica o objetos devueltos por un servicio web. A veces, es posible que tenga que enlazar los controles a estos tipos en tiempo de diseño, aunque no haya ningún objeto en memoria al que los controles puedan enlazarse. Por ejemplo, puede que tenga que etiquetar los encabezados de las columnas de un DataGridView control con los nombres de las propiedades públicas del tipo personalizado.
Para admitir este escenario, el componente BindingSource admite la vinculación a un Type. Al asignar un Type a la DataSource propiedad, el BindingSource componente crea un BindingList<T> vacío de Type elementos. Los controles que posteriormente se enlacen al componente BindingSource serán informados de la presencia de las propiedades o el esquema de su tipo en tiempo de diseño o de ejecución. Para obtener más información, vea Cómo: Enlazar un control de formularios Windows Forms a un tipo.
Métodos Estáticos de ListBindingHelper
Los tipos System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager y BindingSource comparten una lógica común para generar una lista a partir de una pareja DataSource
/DataMember
. Además, esta lógica común se expone públicamente para que la usen los autores de controles y otros terceros en los métodos siguientes static
:
Ordenar y filtrar con la interfaz IBindingListView
El BindingSource componente implementa la IBindingListView interfaz , que extiende la IBindingList interfaz. IBindingList Ofrece una ordenación de columna única y ofrece IBindingListView ordenación y filtrado avanzados. Con IBindingListView, puede ordenar y filtrar elementos en el origen de datos, si el origen de datos también implementa una de estas interfaces. El BindingSource componente no proporciona una implementación de referencia de estos miembros. En su lugar, las llamadas se reenvían a la lista subyacente.
En la tabla siguiente se describen las propiedades que se usan para ordenar y filtrar.
Miembro | Descripción |
---|---|
Propiedad Filter | Si el origen de datos es , IBindingListViewobtiene o establece la expresión usada para filtrar qué filas se ven. |
Propiedad Sort | Si el origen de datos es un IBindingList, se obtiene o establece el nombre de una columna utilizada para la ordenación y la información del criterio de ordenación. -o- Si el origen de datos es un IBindingListView y admite la clasificación avanzada, obtiene múltiples nombres de columna utilizados para la ordenación y el orden de clasificación. |
Integración con BindingNavigator
Puede usar el BindingSource componente para enlazar cualquier control de Windows Forms a un origen de datos, pero el BindingNavigator control está diseñado específicamente para trabajar con el BindingSource componente. El BindingNavigator control proporciona una interfaz de usuario para controlar el BindingSource elemento actual del componente. De forma predeterminada, el BindingNavigator control proporciona botones que corresponden a los métodos de navegación del BindingSource componente. Para obtener más información, vea Cómo: Navegar datos con el control BindingNavigator de Windows Forms.
Consulte también
- BindingSource
- BindingNavigator
- Información general sobre el componente BindingSource
- BindingNavigator Control
- Vinculación de datos en Windows Forms
- Controles que se usarán en formularios Windows Forms
- Cómo: Enlazar un control de Windows Forms a un Tipo
- Cómo reflejar actualizaciones del origen de datos en un control de Windows Forms con BindingSource
.NET Desktop feedback