日期:2014-05-17  浏览次数:20906 次

DataTable ColumnChanged 中修改另一列后dataGridview没有马上显示
本帖最后由 yifawu100 于 2012-04-03 17:23:20 编辑
DataTable 与DataGridView 绑定了,
在 DataTable 的 ColumnChanged 事件中用代码更改了某一列的内容,表示一列有改动另一列也跟着改动,
可是DataGridView显示的另一列并不马上改过来,当光标移到下一列或其它位置才显示改动后的值。
有什么办法可以立即显示呢? 不用移动光标位置。

------解决方案--------------------
DataGird.UpdateCellValue(列IDX,行IDX),这两个IDX你可以通过其他途径得到,或事先保存在一个ColumnChanged 事件处理程序可以访问到的地方.
------解决方案--------------------
这得看你代码怎么写的了,看看修改后是否及时触发了ColumnChanged 事件,改变另一个列是如何改的
------解决方案--------------------
如果不确定已触发的话, 可以在合适的事件中调用this.BindingContext[DataTable].EndCurrentEdit();
------解决方案--------------------
DataGridView单元格的值是结束编辑后才会更新到数据源的,也就是当前单元格失去焦点时,所以会出现你说的这种情况,如果你正在编译单元格时,点击的是ToolBar或Menu之类的东西时,单元格不会失去焦点,这时可以在处理ToolBar或Menu中调用this.BindingContext[DataTable].EndCurrentEdit();

如果你的单元格在失去焦点后,被动单元格的内容依然不出现变化时需要调用UpdateCellValue