Udostępnij za pośrednictwem


Jak: Zatwierdź W trakcie edycji na formanty powiązane dane przed zapisaniem danych

Podczas edycji wartości w formantach powiązanych z danymi, użytkownicy muszą przechodzić poza bieżącym rekordzie przekazać zaktualizowane wartości w źródle danych, że formant jest powiązany.Podczas przeciągania elementów z Okno źródła danych w formularzu pierwszego elementu, który można upuścić generuje kod w polu Zapisz zdarzenia kliknięcia przycisku BindingNavigator.Ten kod wywołuje EndEdit metoda BindingSource.W związku z tym, wywołanie do EndEdit metoda jest generowany tylko w pierwszym BindingSource dodaje się do formularza.

EndEdit Wywołania zatwierdza wszelkie zmiany, które są w procesie wszystkie formanty powiązane z danymi, które są obecnie edytowane.W związku z tym, jeśli formant powiązany z danymi nadal ma fokus i użytkownik kliknie zapisać przycisk wszystkie oczekujące zmiany, w tym kontroli są popełnione przed rzeczywiste Zapisz ( TableAdapterManager.UpdateAll metody).

Nawet jeśli użytkownik próbuje zapisać dane bez przeznaczania zmiany, jako część Zapisz aplikację automatycznie zatwierdzić zmian, można skonfigurować proces.

[!UWAGA]

Przez projektanta BindingSource.EndEdit kodu tylko dla pierwszego elementu upuszczony na formularzu.W związku z tym, należy dodać wiersz kodu wywołania EndEdit metody dla każdego BindingSource w formularzu.Można ręcznie dodać linię kodu wywołania EndEdit metody dla każdego BindingSource.Alternatywnie, można dodać EndEditOnAllBindingSources metody do formularza i wywołać ją przed wykonaniem operacji zapisywania.

Następujący kod dodaje do zastosowań LINQ (zintegrowane języka kwerend) kwerendy iteracyjne wszystkie BindingSource składników i wywołanie EndEdit metody dla każdego BindingSource w formularzu.

Wywołanie EndEdit dla wszystkich składników BindingSource na formularzu

  1. Dodaj następujący kod do formularza, który zawiera BindingSource składników.

    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. Dodaj następujący wiersz kodu bezpośrednio przed wezwań do zapisania danych z formularza ( TableAdapterManager.UpdateAll() metody):

    Me.EndEditOnAllBindingSources()
    
    EndEditOnAllBindingSources();
    

Zobacz też

Informacje

Składnik BindingSource, omówienie

Koncepcje

Hierarchiczny przegląd aktualizacji

Przegląd TableAdapterManager

Przegląd TableAdapter