本帖最后由 AlexZ 于 2024-1-3 14:39 编辑
背景
很多用户有这样的需求,需要在单元格中存放一些业务逻辑需要的信息,而这些信息不能够被使用者看到。因此,我们会将这些信息放在单元格的tag中,而为了让使用者在作复制粘贴操作时也携带这些信息,就只能使用“粘贴所有”。但是会存在这种情况,用户不想要粘贴样式,只希望粘贴值,而业务人员又需要让用户粘贴时将这个tag信息一并粘贴过去,这就犯了难
原因
造成这个问题的原因是,我们的“仅“粘贴值功能就只复制粘贴了单元格的value,对于其他信息不会一并传播,这里面就包括了tag。如果希望仅复制粘贴值时能够携带tag信息,则需要重写右键菜单
解决方法
1. 重写右键菜单
2. 允许用户撤销时removetag信息
- var oldClipboardPasteCommand = GC.Spread.Sheets.Commands.clipboardPaste.execute;
- GC.Spread.Sheets.Commands.clipboardPaste.execute = function (context, options, isUndo) {
- var self = this;
- var fromRanges = options.fromRanges
- let pastedRanges = options.pastedRanges;
- let oldSheet = options.fromSheet
- let newSheet = context.getSheetFromName(options.sheetName)
- var Commands = GC.Spread.Sheets.Commands;
- if (isUndo) {
- Commands.undoTransaction(context, options);
- return true
- } else {
- Commands.startTransaction(context, options);
- if (options.pasteOption == 1) {
- var oldTag = oldSheet.getTag(fromRanges[0].row, fromRanges[0].col)
- newSheet.setTag(pastedRanges[0].row, pastedRanges[0].col, oldTag)
- }
- var flag = oldClipboardPasteCommand(context, options, isUndo);
- Commands.endTransaction(context, options);
- return flag;
- }
- }
复制代码
|
|