找回密码
 立即注册

QQ登录

只需一步,快速开始

Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-2 13:51:30
11#
您好,canUndo是在command上使用的,我将您的代码修改了一下,您可以参考一下:

  1.   var ribbonFileCommands = {
  2.     setIdentifier_1: {
  3.       text: "^",
  4.       title: "竖加正确",
  5.       commandName: "setIdentifier_1",
  6.       execute: (context) => {
  7.         console.log(context);
  8.         commandManager.execute({
  9.           cmd: "changeCell",
  10.           sheetName: context.getWorkbook().getActiveSheet().name(),
  11.         });
  12.       },
  13.     },
  14.   };

  15.   var ribbonFileConfigIdentifier = {
  16.     label: "审计标识符",
  17.     thumbnailClass: "ribbon-thumbnail-spreadsettings-identifier",
  18.     commandGroup: {
  19.       children: [
  20.         {
  21.           direction: "vertical",
  22.           commands: ["setIdentifier_1"],
  23.         },
  24.       ],
  25.     },
  26.   };

  27.   var designerConfig = GC.Spread.Sheets.Designer.DefaultConfig;

  28.   // 新增菜单栏
  29.   var bdoRibbon = {
  30.     id: "bdo",
  31.     text: "立信",
  32.     buttonGroups: [],
  33.   };

  34.   bdoRibbon.buttonGroups.push(ribbonFileConfigIdentifier);
  35.   designerConfig.commandMap = {};
  36.   Object.assign(designerConfig.commandMap, ribbonFileCommands);
  37.   designerConfig.ribbon.push(bdoRibbon);

  38.   // let designerConfig = JSON.parse(
  39.   //   JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
  40.   // );

  41.   let designer = new GC.Spread.Sheets.Designer.Designer(
  42.     "gc-designer-container",
  43.     designerConfig
  44.   );

  45.   let spread = designer.getWorkbook();

  46.   var changeCellCommand = {
  47.     canUndo: true,
  48.     execute: function (spread, options, isUndo) {
  49.       var Commands = GC.Spread.Sheets.Commands;
  50.       if (isUndo) {
  51.         Commands.undoTransaction(spread, options);
  52.         return true;
  53.       } else {
  54.         Commands.startTransaction(spread, options);

  55.         var sheet = spread.getActiveSheet();
  56.         var row = sheet.getActiveRowIndex();
  57.         var col = sheet.getActiveColumnIndex();
  58.         var cell = sheet.getCell(row, col);
  59.         console.log(cell.locked());
  60.         if (cell.locked()) {
  61.           alert(
  62.             "提示",
  63.             "您试图更改的单元格或图表位于受保护的工作表中。不允许修改。"
  64.           );
  65.           return;
  66.         }
  67.         cell.text("^").foreColor("red");
  68.         var ftb = GC.Spread.Sheets.FormulaTextBox.findControl(
  69.           document.getElementsByClassName("formula-bar-item formulaBarText")[0]
  70.         );
  71.         ftb.refresh(true);

  72.         Commands.endTransaction(spread, options);
  73.         return true;
  74.       }
  75.     },
  76.   };

  77.   var commandManager = spread.commandManager();
  78.   commandManager.register("changeCell", changeCellCommand);
复制代码


Demo示例可以参考:https://demo.grapecity.com.cn/sp ... ustom-action/purejs
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部