Compartir a través de


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

  1. 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();
        }
    }
    
  2. 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

Información general sobre TableAdapterManager

Información general sobre TableAdapter