我有一个包含数据网格视图的winform。表单与数据完全断开。代码隐藏调用一个webservice,它返回一个表。该表成为数据网格视图的数据源。一旦数据网格视图显示,用户可以编辑任何行。目前,当他们点击“更新”按钮时,网格中的每一行都被返回。
是否有办法只返回DataGridView中更改的行?
更新:根据Tezzo下面的回答,我能够做到这一点:
var changedRows = ((DataTable)dataGridView1.DataSource).GetChanges(DataRowState.Modified).Rows;
3条答案
按热度按时间kmbjn2e31#
您可以使用
GetChanges
在DataTable
中执行retrieve changes。因此,您可以将以下代码用于
DataGridView
:yhxst69z2#
我用C#提出了一个可行的解决方案,其中我考虑到用户编辑当前单元格,然后执行保存/更新,而不移出编辑的行。对
GetChanges()
的调用不会识别当前编辑的行,因为它的RowState
仍然被标记为“Unchanged
“。如果用户停留在正在编辑的当前单元格上,因为GetChange()
不会触及最后编辑的单元格,我还会调用移动到下一行。mzaanser3#
下面是使用C#获取DataGridView中已修改的所有行的简单方法: