请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

rogergou

注册会员

9

主题

22

帖子

79

积分

注册会员

积分
79
rogergou
注册会员   /  发表于:2018-1-11 15:00  /   查看:5744  /  回复:5

如题: 我写了个自定义函数,目前采用 这个方法 获得 这个函数实例所在的 单元格位置:


          var curSheet = spread.getActiveSheet();
      
         var curCol = curSheet.getActiveColumnIndex();
         var curRow = curSheet.getActiveRowIndex();


但显然, 当有多个自定义函数 存在  跨单元格 依赖计算  且这些自定义函数都需要获得它所在的单元格的数据和属性  时  这是不对的

XXXXCUST.prototype.evaluate = function ( context  .......
没有以上 context 之类的 回调吗?

请问 有何解决方案?  

5 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-12 16:05:06
沙发
您好:
在evaluate 方法中可以通过
var context = arguments[0], value = context.source.getValue(context.row, context.column);
回复 使用道具 举报
rogergou
注册会员   /  发表于:2018-1-12 17:21:05
板凳
本帖最后由 rogergou 于 2018-1-12 17:25 编辑

你好, 您实际试过没有啊  arguments[0] 是自定义函数的第一个参数呀

这是我的自定义函数:


  function XXXXEvaluate() {
      this.name = "XXXXEVAL";
      this.maxArgs = 2;
      this.minArgs = 2;
  }
  XXXXEvaluate.prototype = new GC.Spread.CalcEngine.Functions.Function();
  XXXXEvaluate.prototype.toJSON = function () {
     var settings = {};

     settings.typeName = this.name;
     return settings;
  };
  XXXXEvaluate.prototype.fromJSON = function (settings) {
         
          this.name = settings.typeName;

  };
  XXXXEvaluate.prototype.evaluate = function (first_para,second_para) {

            var curSheet = spread.getActiveSheet();
      
            var curCol = curSheet.getActiveColumnIndex();
            var curRow = curSheet.getActiveRowIndex();
      ......................  一些业务处理

}



回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-12 18:13:05
地板
您是不是没有设置
XXXXEvaluate.prototype.isContextSensitive = function () {
            return true;
        }
如果没有设置的话设置一下就可以了
回复 使用道具 举报
rogergou
注册会员   /  发表于:2018-1-15 10:14:58
5#
真没注意这个配置  不好意思  万分感谢! 解决了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-15 12:04:00
6#
不客气,有什么问题欢迎另开新帖进行询问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部