找回密码
 立即注册

QQ登录

只需一步,快速开始

LeoDreaming

注册会员

3

主题

8

帖子

43

积分

注册会员

积分
43
最新发帖
LeoDreaming
注册会员   /  发表于:2019-12-23 13:11  /   查看:4422  /  回复:5
本帖最后由 LeoDreaming 于 2019-12-23 15:15 编辑

Multirow的A列为显示列B列为隐藏列,当点击执行按钮时候,循环数据条数,通过A列值进行计算后的值,赋给B列。
对于新追加的行的A列(追加后,焦点不移开直接点执行按钮),输入值后,直接点击执行按钮的情况下,DataSet.GetChanges取不到计算后的值。

点击执行后数据如下

               DataSet
                A    B
                1    1
                2    2
新追加行  3    999999

               DataSet.GetChanges
                A    B
                1    1
                2    2
新追加行  3   

赋值是用Multirow.Row(i).Cells(j).Value = 999999 来完成的,监视Dataset是赋值之后的,
但是DataSet.GetChanges取到的不是想要的数据,不是最新的。

这个问题有解决方法吗


5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-24 11:15:21
沙发
这个问题DataGridView也是一样的,直接UI改值changes不为null,通过setValue changes为null

我今天会再想想有没有好办法
回复 使用道具 举报
LeoDreaming
注册会员   /  发表于:2019-12-24 12:57:15
板凳
本帖最后由 LeoDreaming 于 2019-12-24 13:00 编辑

>>           A    B
                1    1
                2    2
新追加行  3    999999

但是,B列的1和2 也是SetValue方式赋值的,就可以。第三行的“999999”所在控件是当前焦点Cell,就取不到值。
很头疼。


回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-24 17:21:53
地板
this.社員BindingSource.EndEdit();

改完cell的值之后,调用一下绑定的数据源结束编辑的方法

这样就可以 GetChanges 取到最新的改动了
回复 使用道具 举报
LeoDreaming
注册会员   /  发表于:2019-12-25 12:45:41
5#
好的,谢谢。
用 BindingSource.EndEdit()确实可以了
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-25 15:48:04
6#
嗯,不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部