在C#中单击文件/保存或Ctrl + S时提交当前脏单元格

时间:2012-06-16 13:46:12

标签: c# winforms datagridview

我有:

  1. MenuStrip包含文件>保存,可将DataGridView值保存到数据库

  2. DataGridView包含必须包含数字值的列(我已使用_CellValidating事件解决了此问题,当输入不是数字时设置e.Cancel = true

  3. 问题是当我单击文件>保存时,单元格仍然是脏的(在编辑模式下),它的值被忽略,不包含在数据库记录中。

2 个答案:

答案 0 :(得分:2)

在文件>保存处理程序的开头,调用myDataGridView.EndEdit()以退出编辑模式并能够获取单元格的值。

答案 1 :(得分:1)

如果要立即将单元格更改提交到基础DataSource,请尝试this -

void dataGridView1_CurrentCellDirtyStateChanged(object sender,
    EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

MSDN:

如果单元格的内容已更改但未保存更改,则单元格将被标记为已修改。

此事件通常在编辑单元格但未将更改提交到数据高速缓存或取消编辑操作时发生。