10金币
本帖最后由 newAll 于 2024-2-23 11:21 编辑
产品:SpreadJS
版本:V16.1.4
重写删除事件后,在撤销栈里只有原生的clearValues, 没有myClear, 但我想保留myClear, 不要clearValues
- const command = {
- canUndo: true,
- execute: function (context, options, isUndo) {
- const Commands = GC.Spread.Sheets.Commands;
- options.cmd = "changeBackColor";
- if (isUndo) {
- Commands.undoTransaction(context, options);
- return true;
- } else {
- Commands.startTransaction(context, options);
- const sheet = spread.getActiveSheet();
- const selections = sheet.getSelections();
- mutilDeleteCellData(spread, selections);
- Commands.endTransaction(context, options);
- return false;
- }
- },
- };
- spread.commandManager().register("myClear", command);
- spread
- .commandManager()
- .setShortcutKey(
- "myClear",
- GC.Spread.Commands.Key.del,
- false,
- false,
- false,
- false
- );
复制代码
|
最佳答案
查看完整内容
您好,这边查了一下您的Demo代码,出现这个问题的原因是因为SpreadJS在编辑单元格的时候会执行editCell命令,然后在EditEnded事件中您又执行了changeBackColor命令,所以重做栈中会存在两次操作。
要解决这个问题,一个可行的方法是重写editCell命令,在这个命令内部增加设置背景色的代码。
但是需要注意的是,如果重写了editCell命令,则需要您自己实现自动格式化功能(将数字识别为Number,将时间字符串识别为时间格式)。 ...
|