Derrick.Jiao 发表于 2021-7-23 11:07:35

自定义右键菜单——根据条件禁用

本帖最后由 Derrick.Jiao 于 2021-7-23 11:08 编辑

自定义菜单是一个很实用的功能,通过自定义菜单我们可以实现许多不同的需求,本次的教程就是利用通过对自定义菜单的讲解,实现一个根据表单保护的状态来是否禁用右键菜单项。我们可以重写onOpenMenu方法,来实现在命令执行时提供更多的选项


相信对禁用指定菜单都不陌生,通过下面的代码可以实现禁用某一项的右键菜单,其原理就是找到指定名称的右键菜单,然后给一个右键菜单对象添加disable属性
function ContextMenu() { }
ContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
ContextMenu.prototype.onOpenMenu = function (menuData, itemsDataForShown, hitInfo, spread) {
for (let i = 0; i < itemsDataForShown.length; i++) {
var item = itemsDataForShown;
if (item.name === "gc.spread.cut") {
item.disable = true;
}
}
};

spread.contextMenu = new ContextMenu();

同理,我们只需稍微改造一下上面的代码,添加一个if语句进行判断就能根据是否表单保护禁止右键菜单的指定项。
function ContextMenu() { }
                ContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
                ContextMenu.prototype.onOpenMenu = function (menuData, itemsDataForShown, hitInfo, spread) {
                  if(sheet.options.isProtected === true) {
                        for (let i = 0; i < itemsDataForShown.length; i++) {
                            var item = itemsDataForShown;
                            if (item.name === "markWithRedBg") {
                              item.disable = true;
                            }
                        }
                  }
                  
                };

                spread.contextMenu = new ContextMenu();
下载附件即可查看完整的demo,附件通过自定义的右键菜单根据表单保护的状态,切换是否可用。
页: [1]
查看完整版本: 自定义右键菜单——根据条件禁用