我有一个带有列(组合框列)的数据网格视图。已实现以下功能。


选择几行(单击最左边的行标题并拖动)。
以编程方式将值设置为某种值(请参阅下文)。所有选定的行都会更改。

    foreach (DataGridViewRow item in dgv.SelectedRows)
    {
        item.Cells["cbxxxxx"].Value = p;
    }
    dgv.EndEdit();

单击保存按钮以保存更改。但是,(dgv.DataSource as DataTable).GetChanges()中不包括最后一行。更改后的数据表的计数始终比所选行少一。缺少的行是最后一行(带有黑色三角形)。


如何解决问题?

最佳答案

最后一行可能仍是活动行,因此您需要通过BindingContext结束编辑:

foreach (DataGridViewRow item in dgv.SelectedRows) {
  item.Cells["cbxxxxx"].Value = p;
}
this.BindingContext[dgv.DataSource].EndCurrentEdit();

关于c# - 以编程方式更新所选行会错过dgv.DataSource.GetChanges()中的最后一行吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26556024/

10-10 09:05