找回密码
 立即注册

QQ登录

只需一步,快速开始

macro

注册会员

12

主题

18

帖子

90

积分

注册会员

积分
90
macro
注册会员   /  发表于:2018-12-20 09:34  /   查看:3322  /  回复:3
如果通过JS代码切换sheet页,ActiveSheetChanging事件无法监听到

3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-20 13:46:13
沙发
您好,不清楚您怎样使用代码来切换的,不过调用命令可以触发事件:

navigationNextSheet        navigationPreviousSheet

API:

http://help.grapecity.com/spread ... heets.Commands.html

回复 使用道具 举报
macro
注册会员   /  发表于:2018-12-21 10:13:34
板凳
KevinChen 发表于 2018-12-20 13:46
您好,不清楚您怎样使用代码来切换的,不过调用命令可以触发事件:

navigationNextSheet        navigationPrev ...

试了一下还是触发不了。看我的代码:
设置监听:
  1. spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanging, function (e, args) {
  2.         spread.suspendPaint();
  3.         args.newSheet.getRange(0,0,args.newSheet.getRowCount(),args.newSheet.getColumnCount()).locked(true);
  4.         args.newSheet.options.isProtected = true;
  5.         spread.resumePaint();
  6.    
  7. });
复制代码
代码触发:
  1. spread.setActiveSheetIndex(gridN);
复制代码
第二种:
  1. spread.commandManager().execute({ cmd: "navigationNextSheet",sheetName: spread.getActiveSheet().name()});
复制代码
如果我用鼠标点击,表格下方的sheet标签切换sheet,就会触发监听,但是我用上面的两种方法,都不会触发。



回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-21 15:23:25
地板
您好,首先很抱歉,我上边给出的回答有误。

切换sheet的事件比较特殊,它们属于UI事件,SpreadJS在设计上就没有不能用代码触发。

您可以把您要执行的逻辑,直接写在setActiveSheetIndex的方法后边执行,

这与您要触发事件,再在事件中做操作的逻辑是完全一样的。

如果还解决不了您的问题,那么能否将您的应用场景详细描述一下?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部