以编程方式更新所选行会丢失dgv.DataSource.GetChanges()中的最后一行?

时间:2014-10-24 20:47:45

标签: c# winforms

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

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

        foreach (DataGridViewRow item in dgv.SelectedRows)
        {
            item.Cells["cbxxxxx"].Value = p;
        }
        dgv.EndEdit();
    
  3. 单击“保存”按钮以保存更改。但是,(dgv.DataSource as DataTable).GetChanges()中排除了最后一行。更改的数据表的计数始终比所选行少一个。丢失的行是最后一行(带有黑色三角形)。

  4. 如何解决问题?

1 个答案:

答案 0 :(得分:3)

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

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