qiuzhilv007 发表于 2015-12-15 17:15:00

代码中对multirow赋值后与其他表merge后数据丢失

有DataTableA和DataTableB,表A作为multirow的DataSource
在代码中对multirow赋值:multirow(rowIndex,columnIndex).value = "abc"
后,与表B merge:
DataTableB.Merge(Directcast(multirow.DataSource,DataTable))
在代码中对表A赋的值abc,没有被merge到表B中
这是multirow的BUG吗?在sheet4.0中相同代码操作没有问题。

robert 发表于 2015-12-16 09:57:00

请尝试在调用Merge之前调用DataTableA的AcceptChanges方法

qiuzhilv007 发表于 2015-12-16 16:54:00

AcceptChanges确实可以更新数据,但把multirow上设定的单元格的式样都清了。这个方法不敢轻易使用,改了这一点却出了更大的BUG。

Alice 发表于 2015-12-16 17:24:00

回复 3楼qiuzhilv007的帖子

谢谢反馈。
问题我们收到了,我请研发组帮您再看下这个问题。

robert 发表于 2015-12-16 17:28:00

明白了。请尝试如下代码,看是否可以解决需求
EditingActions.CommitRow.Execute(this.gcMultiRow);

qiuzhilv007 发表于 2015-12-16 18:04:00

回复 5楼robert的帖子

这样可以解决。谢谢
另外commitRow和EndEdit有何区别,哪个先执行?

robert 发表于 2015-12-17 09:36:00

EndEdit功能:退出编辑,保存值到数据源的对应格子。如果不离开当前行,这个值可以通过按ESC键回滚。
CommitRow功能:如果在编辑状态,先退出编辑状态(EndEdit功能),之后,提交数据源,(类似AcceptChange),CommitRow之后,不能按ESC回滚数据。

所以:EndEdit会先执行
页: [1]
查看完整版本: 代码中对multirow赋值后与其他表merge后数据丢失