找回密码
 立即注册

QQ登录

只需一步,快速开始

98785020

注册会员

8

主题

25

帖子

99

积分

注册会员

积分
99
98785020
注册会员   /  发表于:2018-1-16 11:07  /   查看:3257  /  回复:7
本帖最后由 98785020 于 2018-1-19 15:02 编辑

异步全局公式 继承GC.Spread.CalcEngine.Functions.AsyncFunction,重载evaluate 方法 (试过 demo里的evaluateAsync方法,无效),通过context.setAsyncResult 这个方法,来设置单元格的内容。查阅了下api文档,没找到context这个对象的具体类。该context是否可以获取到这个单元格对应的sheet对象。继而通过sheet对象来设置多列多行的list数据,起始行可以为该公式单元行下一行

7 个回复

倒序浏览
98785020
注册会员   /  发表于:2018-1-17 18:06:52
推荐
ClarkPan 发表于 2018-1-17 14:37
不会啊,给您的demo就是V11版本的,您运行起来打个断点调试一下就能看到啊


用了你的demo去试下了,如果公式是GC.Spread.CalcEngine.Functions.AsyncFunction的,source在arguments[0].ctx下,如果公式是GC.Spread.CalcEngine.Functions.Function.source则在arguments[0]下

评分

参与人数 1金币 +500 收起 理由
Clark.Pan + 500 感谢提醒

查看全部评分

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-16 16:50:40
沙发
您好,通过context获取sheet对象以及行列的index可以参考这个帖子的回复:
http://gcdn.gcpowertools.com.cn/ ... &extra=page%3D1
回复 使用道具 举报
98785020
注册会员   /  发表于:2018-1-16 17:03:34
板凳
本帖最后由 98785020 于 2018-1-16 17:05 编辑
ClarkPan 发表于 2018-1-16 16:50
您好,通过context获取sheet对象以及行列的index可以参考这个帖子的回复:
http://gcdn.gcpowertools.com. ...

根据http://gcdn.gcpowertools.com.cn/ ... iewthread&tid=43887 这个帖子里的方案应该是
var sheetName = context.source.getName();
var sheet = context.source.getSheet(sheetName);
可是我的context.source是undefined ,isContextSensitive 这个函数也重载了,返回值true

spreadjs版本是11
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-16 18:05:31
地板
您好,应该是您context对象拿的不对,参考附件demo

customfunction.html

1.49 KB, 下载次数: 93

回复 使用道具 举报
98785020
注册会员   /  发表于:2018-1-17 10:39:26
5#
ClarkPan 发表于 2018-1-16 18:05
您好,应该是您context对象拿的不对,参考附件demo

spreadjs11版本 拿source的方式应该是变更了,source参数在 arguments[0].ctx.source里。版主可以去确认下
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-17 14:37:04
6#
不会啊,给您的demo就是V11版本的,您运行起来打个断点调试一下就能看到啊
image.png676757506.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-18 14:00:06
8#
嗯,看了一下,确实是这个样子。感谢提醒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部