Cómo: Confirmar tareas de edición en proceso en controles enlazados a datos antes de guardar los datos
Al editar los valores en controles enlazados a datos, los usuarios deben navegar fuera del registro actual para confirmar el valor actualizado al origen de datos subyacente al que se enlaza el control. Al arrastrar los elementos de la Orígenes de datos (ventana) a un formulario, el primer elemento que se coloca genera el código en el evento Click del botón guardar de BindingNavigator. Este código llama al método EndEdit de BindingSource. Por consiguiente, la llamada al método EndEdit sólo se genera para el primer BindingSource que se agrega al formulario.
La llamada EndEdit confirma cualquier cambio que esté en proceso en cualquier control con enlace a datos que se esté editando actualmente. Por consiguiente, si un control con enlace a datos todavía tiene el foco y se hace clic en el botón Guardar, todas las ediciones pendientes en ese control se confirmarán antes de que se guarde (método TableAdapterManager.UpdateAll).
Puede configurar la aplicación para confirmar los cambios automáticamente, incluso si un usuario intenta guardar datos sin confirmar los cambios, como parte del proceso de guardar.
Nota
El diseñador agrega el código BindingSource.EndEdit únicamente en el primer elemento colocado en un formulario. Por consiguiente, tiene que agregar una línea de código para llamar al método EndEdit para cada BindingSource en el formulario. Puede agregar manualmente una línea de código para llamar al método EndEdit para cada BindingSource. Como alternativa, puede agregar el método EndEditOnAllBindingSources al formulario y llamarlo antes de realizar el proceso de guardar.
El código siguiente usa una consulta LINQ (Language-Integrated Query) para procesar una iteración en todos los componentes BindingSource y llamar al método EndEdit para cada BindingSource en un formulario.
Para llamar a EndEdit para todos los componentes BindingSource en un formulario
Agregue el código siguiente al formulario que contiene los componentes BindingSource.
Private Sub EndEditOnAllBindingSources() Dim BindingSourcesQuery = From bindingsources In Me.components.Components Where (TypeOf bindingsources Is Windows.Forms.BindingSource) Select bindingsources For Each bindingSource As Windows.Forms.BindingSource In BindingSourcesQuery bindingSource.EndEdit() Next End Sub
private void EndEditOnAllBindingSources() { var BindingSourcesQuery = from Component bindingSources in this.components.Components where bindingSources is BindingSource select bindingSources; foreach (BindingSource bindingSource in BindingSourcesQuery) { bindingSource.EndEdit(); } }
Agregue inmediatamente la siguiente línea de código antes de cualquier llamada para guardar los datos del formulario (método TableAdapterManager.UpdateAll()):
Me.EndEditOnAllBindingSources()
EndEditOnAllBindingSources();
Vea también
Referencia
Información general sobre el componente BindingSource
Conceptos
Información general sobre la actualización jerárquica