DataGridView检测到的更改未按预期工作

时间:2012-11-08 20:59:37

标签: vb.net winforms .net-4.0 datagridview datatable

我有一个程序将数据加载到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

1 个答案:

答案 0 :(得分:1)

您可以调用Form.ValidateChildren方法,这将验证并提交表单中的所有控件,包括DataGridView。如果存在验证错误,则此方法返回false。