本帖最后由 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[i];
- 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[i];
- if (item.name === "markWithRedBg") {
- item.disable = true;
- }
- }
- }
-
- };
- spread.contextMenu = new ContextMenu();
复制代码
下载附件即可查看完整的demo,附件通过自定义的右键菜单根据表单保护的状态,切换是否可用。 |
|