找回密码
 立即注册

QQ登录

只需一步,快速开始

jerrychen3168
金牌服务用户   /  发表于:2024-12-31 13:31  /   查看:31  /  回复:3
1金币
本帖最后由 Wilson.Zhang 于 2024-12-31 13:36 编辑


你好,
當我使用如下代碼變更單元格字体顏色,可否用undo的指令復原?
(Designer功能欄可以,但自己寫指令卻不行,如图3)
图1. 寫代碼變更顏色
activeSheet.getRange(range.row, range.col, range.rowCount, range.colCount).foreColor(ls_color_name);

图2. 寫代碼變更顏色後,無論是寫代碼或者Designer本身undo都無法恢復.
spread.commandManager().execute({ cmd: "undo", sheetName: sheet_name });

图3.
image.png31964415.png

最佳答案

查看完整内容

您可以參照以下demo將設置單元格顔色的代碼分裝成command: https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/worksheet/actions/custom-action/purejs

3 个回复

倒序浏览
最佳答案
最佳答案
香香
注册会员   /  发表于:5 天前
来自 3#
本帖最后由 香香 于 2024-12-31 14:00 编辑

您可以參照以下demo將設置單元格顔色的代碼分裝成command:
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/worksheet/actions/custom-action/purejs

评分

参与人数 1金币 +500 收起 理由
Wilson.Zhang + 500

查看全部评分

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:5 天前
2#
您好!UI操作會被自動記錄在撤銷棧中,撤銷的操作則在重做棧中記錄。UndoManager保存了撤銷棧和重做棧,憑此響應撤銷和重做。

因此,需要通過UndoManager撤銷和恢復代碼觸發的動作,參考如下代碼:
  1. var undoManager = spread.undoManager();
  2. //  撤銷
  3. undoManager.undo();
  4. //  恢復
  5. undoManager.redo();
复制代码
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:3 天前
4#
誠如3樓用戶提供的方式將您的操作封裝為自定義command,在命令邏輯定義中開啓事務支持撤銷和恢復。您可以參考3樓用戶給出的資源鏈接瞭解詳情。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部