您好,canUndo是在command上使用的,我将您的代码修改了一下,您可以参考一下:
- var ribbonFileCommands = {
- setIdentifier_1: {
- text: "^",
- title: "竖加正确",
- commandName: "setIdentifier_1",
- execute: (context) => {
- console.log(context);
- commandManager.execute({
- cmd: "changeCell",
- sheetName: context.getWorkbook().getActiveSheet().name(),
- });
- },
- },
- };
- var ribbonFileConfigIdentifier = {
- label: "审计标识符",
- thumbnailClass: "ribbon-thumbnail-spreadsettings-identifier",
- commandGroup: {
- children: [
- {
- direction: "vertical",
- commands: ["setIdentifier_1"],
- },
- ],
- },
- };
- var designerConfig = GC.Spread.Sheets.Designer.DefaultConfig;
- // 新增菜单栏
- var bdoRibbon = {
- id: "bdo",
- text: "立信",
- buttonGroups: [],
- };
- bdoRibbon.buttonGroups.push(ribbonFileConfigIdentifier);
- designerConfig.commandMap = {};
- Object.assign(designerConfig.commandMap, ribbonFileCommands);
- designerConfig.ribbon.push(bdoRibbon);
- // let designerConfig = JSON.parse(
- // JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
- // );
- let designer = new GC.Spread.Sheets.Designer.Designer(
- "gc-designer-container",
- designerConfig
- );
- let spread = designer.getWorkbook();
- var changeCellCommand = {
- canUndo: true,
- execute: function (spread, options, isUndo) {
- var Commands = GC.Spread.Sheets.Commands;
- if (isUndo) {
- Commands.undoTransaction(spread, options);
- return true;
- } else {
- Commands.startTransaction(spread, options);
- var sheet = spread.getActiveSheet();
- var row = sheet.getActiveRowIndex();
- var col = sheet.getActiveColumnIndex();
- var cell = sheet.getCell(row, col);
- console.log(cell.locked());
- if (cell.locked()) {
- alert(
- "提示",
- "您试图更改的单元格或图表位于受保护的工作表中。不允许修改。"
- );
- return;
- }
- cell.text("^").foreColor("red");
- var ftb = GC.Spread.Sheets.FormulaTextBox.findControl(
- document.getElementsByClassName("formula-bar-item formulaBarText")[0]
- );
- ftb.refresh(true);
- Commands.endTransaction(spread, options);
- return true;
- }
- },
- };
- var commandManager = spread.commandManager();
- commandManager.register("changeCell", changeCellCommand);
复制代码
Demo示例可以参考:https://demo.grapecity.com.cn/sp ... ustom-action/purejs |