重写右键菜单实现“仅粘贴值”选项携带 Tag 信息
本帖最后由 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.row, fromRanges.col)
newSheet.setTag(pastedRanges.row, pastedRanges.col, oldTag)
}
var flag = oldClipboardPasteCommand(context, options, isUndo);
Commands.endTransaction(context, options);
return flag;
}
}
页:
[1]