作为记录,我已经看过datatable.GetChanges() shows always first row of DataGridView,但遇到了另一个问题。
我在同一页面上有一个DataGridView以及几个下拉列表和文本框,这些下拉列表和文本框与网格数据绑定,因此在DGV中选择一行会用相关列填充其他控件。
当您单击以选择DGV中的另一行时,在DGV.MouseDown事件之后和DGV.MouseUp事件之前的某个时刻,在DGV的数据源上调用DataTable.GetChanges()将显示网格中的第一行。我编写了遍历GetChanges()中行和列的代码,并将DataRowVersion.Original与DataRowVersion.Current进行了比较,它们是完全相同的。
仅在首次加载表单后离开第一行或离开其打开的选项卡并返回到表格后才出现第一行。如果保存,此后每次单击新行时,仅当您实际更改了文本框和下拉菜单中的内容时,它才会显示为已更改。