找回密码
 立即注册

QQ登录

只需一步,快速开始

酸的萌萌yeath

中级会员

70

主题

246

帖子

654

积分

中级会员

积分
654
酸的萌萌yeath
中级会员   /  发表于:2021-8-28 16:53  /   查看:2021  /  回复:3
本帖最后由 Clark.Pan 于 2021-8-30 09:30 编辑

代码如下: 这个BottonClicked的监听事件中,无法调用自己写的方法,但是调用spreadjs的方法是可以的。

spread.bind(GC.Spread.Sheets.Events.ButtonClicked, function (e, args) {
      var sheet = args.sheet, row = args.row, col = args.col;
      var cellType = sheet.getCellType(row, col);
      if (cellType instanceof GC.Spread.Sheets.CellTypes.Button) {
        console.log(e);
        console.log(args);
        if(args.sheetName == "检测部件选择"){
          for(let i = 2;i<10;i++){
            console.log(sheet.getValue(i,2));
            if(sheet.getValue(i,2) != null){
              let sheetnew = spread.getSheetFromName(sheet.getValue(i,2));
              sheetnew.tag("print");  //设置sheet标签
              sheetnew.visible(true);  //设置sheet页可见
            }
          }
        }
        //不能调用其他自己写的方法,比如this.Getvisiblesheet();
     }
    });



3 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-30 09:34:28
沙发
因为buttonClick是一个事件,事件本身有自己独立的作用域,所以有自己的this指代。看到您用了this.Getvisiblesheet();,猜测可能是因为this指代在事件中被替换出现了错误导致的。这样的问题一般来说可以在父方法中用其他变量代替this,避免命名空间被替换的情况。例如:
  1. var that = this
复制代码

另外,如果您不是这样的问题,请您提供详细的demo以便于我们排查问题。谢谢
回复 使用道具 举报
酸的萌萌yeath
中级会员   /  发表于:2021-8-30 10:00:32
板凳
可以了,谢谢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-30 10:15:12
地板

解决了就好,有新问题欢迎来新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部