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