Confirme los cambios en proceso en los controles enlazados a datos antes de guardar la información.

Nota:

La DataSet clase y las clases relacionadas son tecnologías heredadas de .NET Framework de principios de los años 2000 que permiten a las aplicaciones trabajar con datos en memoria mientras las aplicaciones están desconectadas de la base de datos. Las tecnologías son especialmente útiles para las aplicaciones que permiten a los usuarios modificar datos y conservar los cambios de nuevo en la base de datos. Aunque los conjuntos de datos son una tecnología probada de éxito, el enfoque recomendado para las nuevas aplicaciones .NET es usar 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.

Al editar valores en controles enlazados a datos, los usuarios deben desplazarse fuera del registro actual para confirmar el valor actualizado en el origen de datos subyacente al que está enlazado el control. Al arrastrar elementos desde la ventana Orígenes de datos a un formulario, el primer elemento que coloca genera código en el evento de clic del botón Guardar de BindingNavigator. Este código llama al método EndEdit de BindingSource. Por lo tanto, la llamada al método EndEdit solo se genera para la primera BindingSource que se agrega al formulario.

La llamada EndEdit confirma los cambios que están en curso en los controles enlazados a datos que se estén editando en ese momento. Por lo tanto, si un control enlazado a datos aún tiene el foco y hace clic en el botón Guardar, todas las ediciones pendientes en ese control se confirman antes del guardado real (el método TableAdapterManager.UpdateAll).

Puede configurar la aplicación para confirmar automáticamente los cambios, incluso si un usuario intenta guardar datos sin confirmar los cambios, como parte del proceso de guardado.

Nota:

El diseñador solo agrega el código BindingSource.EndEdit para la primera tabla que se coloca en el formulario. Por lo tanto, debe 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 EndEdit método para cada BindingSource. Como alternativa, puede agregar el método EndEditOnAllBindingSources al formulario y llamarlo antes de realizar un guardado.

El código siguiente usa una consulta LINQ (Language-Integrated Query) para iterar todos los componentes BindingSource y llamar al método EndEdit para cada BindingSource en un formulario.

Para invocar EndEdit para todos los componentes BindingSource de un formulario

  1. Agregue el código siguiente al formulario que contiene los BindingSource componentes.

    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 la siguiente línea de código inmediatamente antes de cualquier llamada para guardar los datos del formulario (el TableAdapterManager.UpdateAll() método):

    EndEditOnAllBindingSources();