1、环境:W7+VS2010+ORACLE
在程序中要求修改后保存。采用datagridview与BINDSOURCE 认为会很方便。
另一个原因是数据列太多,不愿逐个去做数据格式验证。采用强DATASET 可以适当减少不必要的错误。
2、问题:用户在保存后提示保存成功,但重新获取数据发现没有保存。
3、分析:经分析发现,当用户编辑完某单元格后直接点保存时,可正常执行保存操作,但数据未保存;如编辑完后在其它单元格点选后再点保存可正常保存。
4、解决:根据现象认为是鼠标不移走,单元格认为尚在编辑状态。
第一次尝试:
if (this.dataGridView1.IsCurrentCellInEditMode) { dataGridView1.EndEdit(); }结果发现这样不行,可能是虽然终止了编辑,但未提交?
第二次尝试:
if (this.dataGridView1.IsCurrentCellInEditMode) { dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit) }还是不行,没招了,在网上找,最直接的办法。即然离开单元格就好使,那么当保存时如有单元格在编辑状态,强制其离开编辑状态:
if (this.dataGridView1.IsCurrentCellInEditMode) { this.dataGridView1.CurrentCell = null; }
-------------------------------------------------------------------------------------------------------
另:与此问题相关的事,当换了一个数据库环境之后,保存仍不好使!经过反复研究得出如下结论:
由于在设计时在界面上拖拽了DATASET并生成了Adapter 正常在APPCONFIG中记录了连接串信息。但当时由于要单独配置数据连接就把此字符串删除了。后来导致
有人可能会烦,一句话能解决的事,为什么写那么多,影响大家阅读,但主要是想把问题说清楚!希望大家理解!