方法 : データの保存前にデータ バインド コントロールで実行中の編集をコミットする

更新 : 2007 年 11 月

データ バインド コントロールで値を編集した場合は、現在のレコード以外に移動し、更新した値をコントロールがバインドされた基になるデータ ソースにコミットする必要があります。項目を[データ ソース] ウィンドウからフォームにドラッグすると、ドロップした最初の項目により、BindingNavigator の保存ボタン クリック イベントにコードが生成されます。このコードは、BindingSourceEndEdit メソッドを呼び出します。このため、EndEdit メソッドへの呼び出しは、フォームに最初に追加した BindingSource に対してのみ生成されます。

EndEdit 呼び出しは、現在編集中のデータ バインド コントロールで実行されている変更をコミットします。したがって、あるデータ バインド コントロールにフォーカスがある状態で、[保存] ボタンをクリックすると、実際の保存 (TableAdapterManager.UpdateAll メソッド) が実行される前に、そのコントロール内のすべての保留中の編集がコミットされます。

ユーザーが変更をコミットせずにデータを保存しようとしても、保存処理の一部として変更が自動的にコミットされるようにアプリケーションを構成できます。

Bb629320.alert_note(ja-jp,VS.90).gifメモ :

デザイナは、フォームに最初にドロップされた項目に対してのみ BindingSource.EndEdit コードを追加します。したがって、フォーム上の各 BindingSource に対して EndEdit メソッドを呼び出すコード行を追加する必要があります。各 BindingSource に対して EndEdit メソッドを呼び出すコード行は、手動で追加できます。または、EndEditOnAllBindingSources メソッドをフォームに追加して、保存を実行する前に呼び出すこともできます。

次のコードでは、統合言語クエリ (LINQ: Language-Integrated Query) クエリを使用してすべての BindingSource コンポーネントを反復処理し、フォーム上の各 BindingSource に対して EndEdit メソッドを呼び出します。

フォーム上のすべての BindingSource コンポーネントに対して EndEdit を呼び出すには

  1. 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. フォームのデータを保存するすべての呼び出し (TableAdapterManager.UpdateAll() メソッド) の直前に、次のコード行を追加します。

    Me.EndEditOnAllBindingSources()
    
    EndEditOnAllBindingSources();
    

参照

概念

階層更新の概要

TableAdapterManager の概要

TableAdapter の概要

参照

BindingSource コンポーネントの概要