SpreadJS右键菜单——条件呼出
本帖最后由 DerrickJiao 于 2020-11-28 15:49 编辑背景:SpreadJS拥有强大的自定制能力,其中自定制右键菜单就是比较突出的一个功能。题目右键菜单的条件呼出是指,自定义的右键菜单选项可以通过某些条件呼出。也就是说可以实现在某些指定的单元格上,右键可以呼出指定的菜单。本帖实现的是,为有公式的单元格的右键菜单添加一个“钻取”选项,而没有公式的单元格则右键无此选项。
首先,我们先初始化一个表单,为其添加数据样式等,具体这里就不再赘述。
我们直接来到最核心的部分:自定义右键菜单
这部分代码利用commandManger注册一个命里,可以将你的逻辑填写在注释处。
spread.commandManager().register("drill",{
canUndo: true,
execute: function (context, options, isUndo) {
var Commands = GC.Spread.Sheets.Commands;
// 在此加cmd
options.cmd = "drill";
if (isUndo) {
Commands.undoTransaction(context, options);
return true;
} else {
Commands.startTransaction(context, options);
//这里添加你的逻辑
alert("我是公式!!")
Commands.endTransaction(context, options);
return true;
}
}
});
这样,当你的选项被点击式,就会执行上述的逻辑。
下面是重写onOpenMenu方法,将呼出右键菜单的逻辑写在里面。这里用getFormula判断当前单元格是否有公式,如果有,则在呼出的右键菜单上添加“钻取”这个选项。当然,你也可以根据你的需求添加不同的判断条件。
function ContextMenu(){}
ContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
ContextMenu.prototype.onOpenMenu = function (menuData, itemsDataForShown, hitInfo,spread) {
var sheet = spread.getActiveSheet();
if (sheet.getFormula(sheet.getActiveRowIndex(),sheet.getActiveColumnIndex()) !== null) {
itemsDataForShown.push({text: "钻取", name: "find", command: "drill",
workArea: "viewportcolHeaderrowHeaderslicercorner"});
}
};
var contextMenu = new ContextMenu();
spread.contextMenu = contextMenu;
这样,就可以实现在不同的区域实现不同的右键菜单了。怎么样,学会了吗?
下载附件即可查看完整代码
页:
[1]