1

我有一个程序将数据加载到 DataGridView 中,用户可以在其中编辑/添加/删除数据。当他们关闭表单时,如果有任何更改,它会询问用户是否要将更改保存到数据库中。

所以我有一个 DataTable,我加载并分配给 DataGridView 的 DataSource。然后我可以对表中的数据进行更改,如果我调用 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 回答