日期:2014-05-19  浏览次数:21136 次

DataGridView单元格编辑时,数据保存不上
DataGridView绑定了数据源,然后编辑某个单元格后,光标不离开这个单元格,这个单元格的数据就保存不了,或者表只有一行记录时,也保存不了,用了DataGridView的EndEdit()和DataTable的AcceptChanges()都不行

------解决方案--------------------
编辑某个单元格后,光标不离开这个单元格就保存不上?
那你把DataGridView的当前单元格移走或置空试试...

DataGridView1.EndEdit();

DataGridView1.CurrentCell = null; //加这句试试

DataAdapter.Update(DataTable);

------解决方案--------------------
有段时间没碰winform了,不算回复,只当闲聊~

其实DataGridView上编辑数据时,只有移动光标才把改变后的数据提交到绑定的数据源(如DataTable),这种方式还算合理。至少移动到别的单元格时可以触发某些校验验证一下修改后的数据符不符合规范,然后用户输对了才允许移动别的地方。Sql Server 2005也是这个德性~

wpf里倒是有个UpdateSourceMode里可以指定焦点离开时提交,还是修改同时提交的选项,不知道DataGridView里有没有。

还是推荐使用BindingSource作为中间层,.net 2.0 winform里新增的BindingSource不是平白无故出现的东西。我自己甚至很偏执的认为2.0 winform里不用BindingSource或者没搞明白BindingSource都是很不明智的。



------解决方案--------------------
DataGridView1.EndEdit();
//试试加上这句:将焦点放到其它控件上,比如有button1
this.button1.Focus();
------解决方案--------------------
你如果不离开当前行的话,修改是不会被提交的。
------解决方案--------------------
你如果不离开当前行的话,修改是不会被提交的。那是,认为你还没修改完,不提交的.