找回密码
 立即注册

QQ登录

只需一步,快速开始

Xxxu

注册会员

3

主题

6

帖子

29

积分

注册会员

积分
29
  • 91

    金币

  • 3

    主题

  • 6

    帖子

最新发帖
Xxxu
注册会员   /  发表于:2024-3-7 15:07  /   查看:2307  /  回复:7
本帖最后由 Xxxu 于 2024-3-7 15:15 编辑

如题,封装了一个命令,操作2张sheet页,先操作A页,后操作B页,撤回时只撤回了A页,B页并没有回退,是我的用法有什么问题吗?

image.png752318725.png

或者参考这个代码
U7IEH@LQ500U@]}_8`{MT.png461645202.png

7 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-7 17:31:55
沙发
您好,您描述的情况我这边可以复现,不过我想知道您为什么会有这样的使用场景?在对一个sheet进行编辑的时候为什么会同时对另一个sheet进行编辑?为什么会有这样的需求呢?
回复 使用道具 举报
Xxxu
注册会员   /  发表于:2024-3-7 17:39:26
板凳
Joestar.Xu 发表于 2024-3-7 17:31
您好,您描述的情况我这边可以复现,不过我想知道您为什么会有这样的使用场景?在对一个sheet进行编辑的时 ...

可以复现是可以撤回时两个sheet都可以撤回吗?可以提供一下demo吗?
业务场景需要一个按钮同时操作多个sheet
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-7 15:07:19
地板
本帖最后由 Joestar.Xu 于 2024-5-22 12:07 编辑

目前来说无法实现同时撤回两个sheet的功能,具体是什么样的业务场景呢?能否请您详细说明一下?

结论错误,请看8楼。
回复 使用道具 举报
Xxxu
注册会员   /  发表于:2024-3-7 18:14:38
5#
Joestar.Xu 发表于 2024-3-7 17:51
目前来说无法实现同时撤回两个sheet的功能,具体是什么样的业务场景呢?能否请您详细说明一下?

我看直接有个版主回复的execute函数的sheetName参数传一个字符串数组,我这边试了试发现命令不执行,是之前的版本可以,现在不可以了?
业务场景是做报价的。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-8 11:25:56
6#
Xxxu 发表于 2024-3-7 18:14
我看直接有个版主回复的execute函数的sheetName参数传一个字符串数组,我这边试了试发现命令不执行,是之 ...

您能提供一下之前那个版主回复的链接吗?这边调研一下看看是不是版本之间的差异导致的。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-18 17:33:05
7#
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-22 12:06:21
8#
本帖最后由 Joestar.Xu 于 2024-5-22 12:07 编辑

您好,抱歉之前给出的信息有误,请参考以下代码:

之前的版主链接:https://gcdn.grapecity.com.cn/showtopic-162581-1-1.html

  1. var command1 = {
  2.   canUndo: true,
  3.   execute: function (spread, options, isUndo) {
  4.     var Commands = GC.Spread.Sheets.Commands;
  5.     options.cmd = "sheetCmd";
  6.     if (isUndo) {
  7.       Commands.undoTransaction(spread, options);
  8.       return true;
  9.     } else {
  10.       Commands.startTransaction(spread, options);

  11.       var sheet1 = spread.getSheetFromName(options.sheetName[0]);
  12.       let cell = sheet1.getCell(options.row, options.col);
  13.       cell.backColor(options.backColor);
  14.       sheet1.addRows(0, 1);

  15.       var sheet = spread.getSheet(1);
  16.       sheet.setValue(0, 0, "Hello, SpreadJS");

  17.       Commands.endTransaction(spread, options);
  18.       return true;
  19.     }
  20.   },
  21. };
  22. var commandManager = spread.commandManager();
  23. commandManager.register("sheetCmd", command1);

  24. document.querySelector("#button1").addEventListener("click", function () {
  25.   commandManager.execute({
  26.     cmd: "sheetCmd",
  27.     sheetName: ["Sheet1", "Sheet2"],
  28.     row: 1,
  29.     col: 2,
  30.     backColor: "red",
  31.   });
  32. });
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部