1

ユーザーがデータを編集/追加/削除できるDataGridViewにデータをロードするプログラムがあります。フォームを閉じるときに、変更が加えられている場合は、ユーザーが変更をデータベースに保存するかどうかを尋ねられます。

だから私はDataGridViewのデータソースにロードして割り当てるDataTableを持っています。その後、テーブル内のデータに変更を加えることができ、DataSet.Updateメソッドを呼び出すと更新されます。

ただし、DataTable.GetChangesメソッドを呼び出して変更を確認すると、DataGridViewの現在の行からタブを付けたりクリックしたりした場合を除いて何も表示されません(この場合、.GetChangesは機能します)。行のフォーカスが失われない限り、変更はDataTableにコミットされません。

それで、DataGridViewでセルが変更されているかどうかを確認する方法、または行からタブで移動せずにそれらの変更をコミットする方法はありますか?

繰り返しますが、GridViewの行を変更しないと失敗しますが、それ以外の場合は機能します。私はそれが両方の状況で機能することを望んでいます。

    Dim changedRows As New DataTable()
    changedRows = dtInfo.GetChanges(DataRowState.Modified Or DataRowState.Added Or DataRowState.Deleted)
    If Not changedRows Is Nothing Then
    ....
    End If
4

1 に答える 1

1

Form.ValidateChildrenメソッドを呼び出すことができます。これにより、DataGridViewを含む、フォーム内のすべてのコントロールが検証され、コミットされます。検証エラーがある場合、このメソッドはfalseを返します。

于 2012-11-09T14:46:39.877 に答える