找回密码
 立即注册

QQ登录

只需一步,快速开始

qulitao888

注册会员

2

主题

3

帖子

21

积分

注册会员

积分
21
  • 55

    金币

  • 2

    主题

  • 3

    帖子

最新发帖
qulitao888
注册会员   /  发表于:2024-11-29 12:03  /   查看:120  /  回复:4
1金币
使用commandManager().setShortcutKey 自定义时候,导致undo redo失效怎么办?

最佳答案

查看完整内容

猜测可能是通过快捷键触发命令时options中未携带命令名称,导致撤销栈未能正常记录。在execute方法内部,判断isUndo前将命令名称赋值给options.cmd。 可以参考官网产品文档了解详情: https://demo.grapecity.com.cn/spreadjs/help/docs/faqs/worksheet/commands/custom-commands

4 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-11-29 12:03:07
来自 4#
本帖最后由 Wilson.Zhang 于 2024-12-2 11:55 编辑
qulitao888 发表于 2024-11-29 20:37
按照咱们官网例子这么写的 ,应该改哪里?:

猜测可能是通过快捷键触发命令时options中未携带命令名称,导致撤销栈未能正常记录。在execute方法内部,判断isUndo前将命令名称赋值给options.cmd。

可以参考官网产品文档了解详情:
https://demo.grapecity.com.cn/spreadjs/help/docs/faqs/worksheet/commands/custom-commands
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-29 17:34:20
2#
您好!请教下您在自定义快捷键中设置的命令是否为自定义命令,如果是,请排查下自定义命令的定义中是否允许撤销重做。
回复 使用道具 举报
qulitao888
注册会员   /  发表于:2024-11-29 20:37:02
3#
按照咱们官网例子这么写的 ,应该改哪里?:


  let commanddel = {
    canUndo: true,
    execute: function(context, options, isUndo) {
      let Commands = GC.Spread.Sheets.Commands;
      if (isUndo) {
        Commands.undoTransaction(spread, options);
        return true;
      } else {

        Commands.startTransaction(context, options);
        //禁止删除
        console.log(context.getActiveSheet().getActiveColumnIndex());
        if (context.getActiveSheet().getActiveColumnIndex() != 1
          && context.getActiveSheet().getActiveColumnIndex() != 2
          && context.getActiveSheet().getActiveColumnIndex() != 3
          && context.getActiveSheet().getActiveColumnIndex() != 7
        ) {
          return false;
        }
        Commands.endTransaction(context, options);
        alert('禁止删除');
        return true;
      }
    }
  };
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:6 天前
5#
您好,由于本帖较长时间没有回复,本帖先做结贴处理了,后续如您有其他问题,欢迎您开新帖提问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部