我有一个程序将数据加载到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
答案 0 :(得分:1)
您可以调用Form.ValidateChildren方法,这将验证并提交表单中的所有控件,包括DataGridView。如果存在验证错误,则此方法返回false。