找回密码
 立即注册

QQ登录

只需一步,快速开始

gjsucs

金牌服务用户

11

主题

31

帖子

317

积分

金牌服务用户

积分
317
gjsucs
金牌服务用户   /  发表于:2020-7-31 10:38  /   查看:2796  /  回复:8
有个单元格用了sumif(),在值变化的时候我需要知道并处理。GC.Spread.Sheets.Events.CellChanged 并不能达到效果

8 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-31 13:32:35
沙发
本帖最后由 lynn512 于 2020-7-31 14:50 编辑

您好,监听函数单元格值的变化情况时需要用到公式追踪,使用getPrecedents()方法返回依赖的单元格区域信息。您可以对引用的单元格区域进行监控,当单元格值变化时即执行自定义操作。下图A1函数为“=SUMIF(B1:B3,">3")”, B1:B3 为函数引用的单元格区域,D1为函数 “ =A1

image.png49910582.png


getDependents() 返回被依赖的单元格区域信息
image.png74503478.png

getPrecedents()方法返回依赖的单元格区域信息
image.png487355956.png
回复 使用道具 举报
AlexZ讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-31 13:53:38
板凳
本帖最后由 lynn512 于 2020-7-31 14:13 编辑

你好,提供另一个思路,利用脏数据功能,可以获得因引用值改变而引起的变化

https://demo.grapecity.com.cn/sp ... /dirty-items/purejs   
回复 使用道具 举报
gjsucs
金牌服务用户   /  发表于:2020-7-31 17:24:40
地板
spread.bind(GC.Spread.Sheets.Events.CellChanged, function (e, info) {})
我用这个方法监听依赖单元格变化,如果有变化取单元格(=SUMIF(B1:B3,">3") )的值,但是此时的值是旧的值。即框架先触发CellChanged 再改函数单元格的值。我拿不到新的值,该怎么做?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-31 17:45:12
5#
您好,您可以参考下我上面的回答。
回复 使用道具 举报
gjsucs
金牌服务用户   /  发表于:2020-7-31 17:52:11
6#
上面的答案不就是监控依赖单元格吗?我监控了但是有新的问题。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-31 19:20:51
7#
您好,您可以参考下如下demo。

demo-js模板.html

2.8 KB, 下载次数: 48

回复 使用道具 举报
gjsucs
金牌服务用户   /  发表于:2020-7-31 22:21:38
8#
解决了,主要是timeout
回复 使用道具 举报
AlexZ讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-31 23:05:49
9#
好的,那就结贴了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部