【15,1,1】关于自定义命令的事务控制问题(SJS-16015)
本帖最后由 Lynn.Dou 于 2022-11-28 12:28 编辑【15,1,1】自定义命令,挂载到内置的右键菜单上,命令处理逻辑中如何控制事务,使得撤销操作时能够还原执行该命令的所有操作
如下场景,要在撤销操作时同步撤销操作1、操作2,应该如何实现?另外代码最后的return true;有什么作用?
execute: async function (context, options, isUndo) {
console.log({context, options, isUndo})
var Commands = GC.Spread.Sheets.Commands;
if (isUndo) {
Commands.undoTransaction(context, options);
return true;
} else {
Commands.startTransaction(context, options);
const {row, rowCount} = options.selections[0]
// 操作1
sheet.removeCustomName(nameX)
// 操作2
sheet.deleteRows(row, rowCount)
Commands.endTransaction(context, options);
return true;
}
}
请您确认一下 是否设置了canUndo属性?
https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Commands.CommandManager#register 本帖最后由 avicdev 于 2022-11-10 14:19 编辑
xcymoo 发表于 2022-11-10 13:56
请您确认一下 是否设置了canUndo属性?
https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spr ...
设置了true
撤销的时候,deleteRows撤销了,removeCustomName没撤销
本帖最后由 Lynn.Dou 于 2022-12-20 15:48 编辑
avicdev 发表于 2022-11-10 14:17
设置了true
撤销的时候,deleteRows撤销了,removeCustomName没撤销
你好,问题已复现,我研究了一下,目前撤销操作是不支持撤销自定义名称的,撤销只能面向用户对单元格的操作。
这边已将此问题记录下来做进一步的调研,如果有进展在贴中通知您。
您可以考虑在if(isUndo)里面把这个名称再加回来,先尝试实现您的需求。
更新进展:
经调研确认,目前SpreadJS撤销操作不支持撤销自定义名称,建议您先参考楼上方案。
页:
[1]