请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-7-23 11:07  /   查看:2876  /  回复:0
本帖最后由 Derrick.Jiao 于 2021-7-23 11:08 编辑

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


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

  11. spread.contextMenu = new ContextMenu();
复制代码


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

  14.                 spread.contextMenu = new ContextMenu();
复制代码

下载附件即可查看完整的demo,附件通过自定义的右键菜单根据表单保护的状态,切换是否可用。

inandout.html

4.02 KB, 下载次数: 85

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部