qulitao888 发表于 2024-11-29 12:03:06

使用commandManager().setShortcutKey 自定义时候,导致undo redo失效怎么办?

使用commandManager().setShortcutKey 自定义时候,导致undo redo失效怎么办?

Wilson.Zhang 发表于 2024-11-29 12:03:07

本帖最后由 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

您好!请教下您在自定义快捷键中设置的命令是否为自定义命令,如果是,请排查下自定义命令的定义中是否允许撤销重做。

qulitao888 发表于 2024-11-29 20:37:02

按照咱们官网例子这么写的 ,应该改哪里?:


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.Xu 发表于 2024-12-30 10:04:30

您好,由于本帖较长时间没有回复,本帖先做结贴处理了,后续如您有其他问题,欢迎您开新帖提问。
页: [1]
查看完整版本: 使用commandManager().setShortcutKey 自定义时候,导致undo redo失效怎么办?