找回密码
 立即注册

QQ登录

只需一步,快速开始

jiangyz1
金牌服务用户   /  发表于:2024-6-25 15:27  /   查看:1235  /  回复:3
1金币

image.png205383605.png
16版本,需求是不设置表格保护,但需要将在线编辑器所有操作置灰。
(编辑器上所有默认操作都不能放开,但又要求显示编辑器,代表有这些功能只是不开放)

3 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-6-25 18:42:37
沙发
您好,需要调研下给您回复。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-6-25 18:57:14
板凳
可以参考附件demo,附件demo中将设置字体粗体的按钮置灰了

purejs.zip

3.02 MB, 下载次数: 335

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-6-26 10:06:44
地板
您好,需要遍历菜单栏中所有的节点,如下代码进行递归遍历:

  1.        let defaultConfig = GC.Spread.Sheets.Designer.DefaultConfig
  2.         let ribbonNode = defaultConfig.ribbon
  3.         let commands = []
  4.         findNode(ribbonNode)

  5.         function findNode(node) {
  6.             if (node instanceof Array) {
  7.                 for (let i = 0; i < node.length; i++) {
  8.                     findNode(node[i])
  9.                 }
  10.             } else if (node.buttonGroups) {
  11.                 findNode(node.buttonGroups)
  12.             } else if (node.commandGroup) {
  13.                 findNode(node.commandGroup)
  14.             } else if (node.children) {
  15.                 if (node.command) {
  16.                     commands.push(node.command)
  17.                 }
  18.                 findNode(node.children)
  19.             } else if (node.commands) {
  20.                 commands.push(...node.commands)
  21.             } else {
  22.                 if (!node.type) {
  23.                     commands.push(node)
  24.                 }
  25.             }
  26.         }
复制代码
获取到菜单栏中所有的commandName后,获取指令,修改enableContext。注意有的命令enableContext为null ,所以需要做个判断,如下代码:
  1.      let commandMap = {}
  2.         commands.forEach(commandName => {
  3.             let command = GC.Spread.Sheets.Designer.getCommand(commandName)
  4.             if (command) {
  5.                 command.enableContext = command.enableContext == null ? "!controlByMyself" : command.enableContext + "&& !controlByMyself";
  6.                 commandMap[commandName] = command
  7.             }
  8.         })
复制代码
在上述代码中,在enableContext中增加了变量controlByMyself ,可以通过controlByMyself控制是否全部disabled.
之后重新设置config
  1.         defaultConfig.commandMap = commandMap

  2.         designer.setConfig(defaultConfig)
复制代码


最后我们增加两个按钮,用来控制开关
  1. <button id="btn1">菜单禁止点击</button>
  2. <button id="btn2">菜单恢复点击</button>
复制代码
  1.     document.getElementById('btn1').addEventListener('click', function () {
  2.             designer.setData("controlByMyself", true)
  3.         })

  4.         document.getElementById('btn2').addEventListener('click', function () {
  5.             designer.setData("controlByMyself", false)
  6.         })
复制代码
完整代码参考附件:

菜单栏全部置为disabled.html

4.75 KB, 下载次数: 199

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部