2012-06-16 40 views
1

我:提交當前髒細胞上點擊File/C#中保存或按Ctrl + S

  1. MenuStrip具有文件>保存,節省DataGridView值數據庫

  2. DataGridView有列必須包含數字值(我已通過使用_CellValidating事件解決此問題,當輸入不是數字時,設置e.Cancel = true

問題是,當單擊「文件」>「保存」時單元格仍然髒(在編輯模式下),它的值將被忽略並且不包含在數據庫記錄中。

+0

小心顯示你的工作? –

回答

2

在文件>保存處理的開始,呼籲myDataGridView.EndEdit()走出的編輯模式,並能夠得到單元格的值。

+0

謝謝!這回答了我的問題。 –

1

嘗試this如果要立即提交細胞改變底層DataSource-

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

MSDN:

改性在其內容發生了變化,但變化尚未保存的細胞標記。當細胞已被編輯,但變化還沒有被提交到數據高速緩衝存儲器,或者當編輯操作被取消通常發生

此事件。

+0

如果對單元格內容有任何驗證(例如輸入必須是數字),則可能需要避免此操作。用戶在輸入有效的條目時無法輸入無效的內容 - 例如,您將無法輸入1.6e-19,因爲當您達到1.6e時,它將無法通過驗證。 –