找回密码
 立即注册

QQ登录

只需一步,快速开始

Dtttax
高级会员   /  发表于:2021-4-14 13:46:58
11#
lynn512 发表于 2021-4-14 12:27
“现在我改了一个单元格的值,这个单元格有很多dependents,需求是标记出这次修改影响到的单元格”
您通过 ...

valuechange事件不能监听到公式计算的值变化
回复 使用道具 举报
Dtttax
高级会员   /  发表于:2021-4-14 14:04:28
12#
如果valueChanged事件可以监听到公式计算的值变化,直接用valueChanged监听就行了,我们现在的版本是14.0.3,哪个版本可以监听,是否需要升级
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-14 14:23:38
13#
valueChanged事件本身不能监听公式的值变动的。
所以我们需要利用valueChanged事件间接的判断公式值变动。
举个例子:公式 “=A1+B1”,单元格A1或B1的值改变时,是可以被valueChanged监听到的。
因为这个公式引用了A1 B1,所以A1 B1变化时,公式值一定会变化,间接的实现了监听公式值变化。
您使用递归是查到了与公式有关的所有单元格,
只要能监听这些单元格变动,那么公式值就一定变动了。
这样说您能理解吗?

如果描述您不好理解的话,可以参考下方链接的demo,结合代码更容易理解下。
https://gcdn.grapecity.com.cn/fo ... hread&tid=81568
https://gcdn.grapecity.com.cn/fo ... hread&tid=89684
回复 使用道具 举报
Dtttax
高级会员   /  发表于:2021-4-14 15:29:32
14#
lynn512 发表于 2021-4-14 14:23
valueChanged事件本身不能监听公式的值变动的。
所以我们需要利用valueChanged事件间接的判断公式值变动。 ...

这就不严谨了,A1与B1的值一起变化,增减互相抵消,当前单元格值不变,难道还要去解析公式吗?我们这边很多判断大于0的这种,只要没有正负数变化的,就不会变
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-14 16:03:02
16#
本帖最后由 lynn512 于 2021-4-14 16:04 编辑

您涉及了跨表单,所以无法通过脏数据来判断,
目前的思路就是,您通过递归,获取所有与公式有关的单元格,然后对这些单元格监听,
监听到值变动时,重新获取公式单元格的值,并与旧公式值比较,如果不一致,则公式值发生了变动。
这个比较是发生在 监听事件里的,所以需要调用setTimeout异步获取公式值。
(这部分的逻辑与脏单元格demo是一样的)
目前除了这个思路,没有更好的方法了。
回复 使用道具 举报
Dtttax
高级会员   /  发表于:2021-4-16 09:51:44
17#
lynn512 发表于 2021-4-14 16:03
您涉及了跨表单,所以无法通过脏数据来判断,
目前的思路就是,您通过递归,获取所有与公式有关的单元格, ...

已解决,在editend事件中可以取到脏数据

评分

参与人数 1金币 +100 收起 理由
Lynn.Dou + 100 很给力!

查看全部评分

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-16 10:05:37
18#
这个事件确实可以湖区获取到,感谢您的分享!
这边就先结贴了,有问题欢迎另开新帖。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部