找回密码
 立即注册

QQ登录

只需一步,快速开始

大盆

金牌服务用户

5

主题

27

帖子

72

积分

金牌服务用户

积分
72
大盆
金牌服务用户   /  发表于:2023-9-11 18:30  /   查看:3015  /  回复:22
20金币
本帖最后由 Richard.Huang 于 2023-10-20 13:41 编辑

产品:SpreadJS
版本:V16.2
问题编号:SJS-20119

初始化设置了两个异步公式  ,点击按钮 调用calculate()方法 恢复计算  要点击两次才能计算出结果,见demo;
期望实现需求,插行删行 不触发异步公式计算 点击按钮才让它进行计算

16.2demo.rar

96.58 KB, 下载次数: 108

22 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-12 09:43:24
沙发
您好,这边没有复现您的问题:
加载页面后,点击按钮可以进行公式计算,无需点击两次,其次,插行之后也没有进行公式计算,点击按钮之后才进行的计算。

异步函数用在不能立刻获取计算结果的时候使用, 比如数据或者计算方法在服务器端的时候。
比如您这里想在点击按钮之后,计算公式,可以试下evaluateFormula这个api ,点击按钮后进行公式计算
  1. var result = GC.Spread.Sheets.CalcEngine.evaluateFormula(sheet, "SUM(A1:A2)", 0, 0);
复制代码


公式计算.gif
回复 使用道具 举报
大盆
金牌服务用户   /  发表于:2023-9-12 10:16:21
板凳
Ellia.Duan 发表于 2023-9-12 09:43
您好,这边没有复现您的问题:
加载页面后,点击按钮可以进行公式计算,无需点击两次,其次,插行之后也没 ...

您好 我这边出现这现象是在这两个异步函数上方插行后 点击的计算,需要点击两下,烦请您再试一下看看能否复现
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-12 10:57:01
地板
本帖最后由 Ellia.Duan 于 2023-9-12 11:59 编辑
大盆 发表于 2023-9-12 10:16
您好 我这边出现这现象是在这两个异步函数上方插行后 点击的计算,需要点击两下,烦请您再试一下看看能否 ...

您好,您的问题已复现,这边调研下为什么需要点击两次才会出现结果的问题。此贴将置为保留处理。
问题编号:SJS-20119
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-12 11:48:53
5#
Ellia.Duan 发表于 2023-9-12 10:57
您好,您的问题已复现,这边调研下为什么需要点击两次才会出现结果的问题。此贴将置为保留处理。

您好,这边确认下,您想要解决的问题是:
公式上面插入行,点击两次按钮,即执行两次spread.calculate()公式才开始计算
希望点击一次按钮,公式参与计算?
回复 使用道具 举报
大盆
金牌服务用户   /  发表于:2023-9-12 14:21:28
6#
本帖最后由 大盆 于 2023-9-12 14:24 编辑
Ellia.Duan 发表于 2023-9-12 11:48
您好,这边确认下,您想要解决的问题是:
公式上面插入行,点击两次按钮,即执行两次spread.calculate() ...

期望是开启了手动计算模式后,只有点击按钮触发calculate() 才计算spread表中所有公式(普通公式,异步公式),
另外想确认一下,异步公式设置了interval,如果应用了手动计算模式,它还会按某一个时间间隔进行计算吗
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-12 15:11:07
7#
本帖最后由 Ellia.Duan 于 2023-9-12 15:20 编辑
大盆 发表于 2023-9-12 14:21
期望是开启了手动计算模式后,只有点击按钮触发calculate() 才计算spread表中所有公式(普通公式,异步公 ...

您好,可能您这边理解的手动计算模式有误,比如设置公式'=sum(A1,2,5)' ,页面加载,公式还是会计算,结果为7 。

当A1单元格发生变化输入1时,且设置为手动模式,这种情况下执行calculate()发现公式结果为8。
如果计算模式是自动,那么当A1单元格发生变化时,公式也立即变化。
所以 针对您的需求,您看下这种情况是否满足:
image.png523822326.png
初始化Spread后,暂停公式计算。当点击按钮后,开始公式计算

针对您的第二个问题,不太明白手动模式下为什么要开启定时计算。


回复 使用道具 举报
大盆
金牌服务用户   /  发表于:2023-9-13 11:10:39
8#
Ellia.Duan 发表于 2023-9-12 15:11
您好,可能您这边理解的手动计算模式有误,比如设置公式'=sum(A1,2,5)' ,页面加载,公式还是会计算,结果 ...

第二个问题是因为 有几个自定义公式 是需要根据当前sheet表里面其它格子的值进行计算的,可能是增行后里面格子的值,计算时间是期望用户 一输入完值,就让那两个公式进行计算,其它公式不进行计算
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-9-13 11:19:36
9#
大盆 发表于 2023-9-13 11:10
第二个问题是因为 有几个自定义公式 是需要根据当前sheet表里面其它格子的值进行计算的,可能是增行后里 ...

根据您的描述,不设置定时计算,用您现在的代码也可能完成您的需求。
回复 使用道具 举报
大盆
金牌服务用户   /  发表于:2023-9-13 11:24:57
10#
本帖最后由 大盆 于 2023-9-13 11:28 编辑
Ellia.Duan 发表于 2023-9-13 11:19
根据您的描述,不设置定时计算,用您现在的代码也可能完成您的需求。

定时计算可以在手动计算模式下开启吗,这样不知道是不是还有效,因为这块的自定义公式取值逻辑有点复杂,不是简单的像sum那样的加和,另之前可能没有表述清楚,想知道 在设置spread为手动计算模式时,再次fromjson一个表,请问这个表里面的公式在fromjson后能够进行一次计算吗
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部