找回密码
 立即注册

QQ登录

只需一步,快速开始

Ellia.Duan SpreadJS 开发认证
超级版主   /  发表于:2024-6-27 10:01  /   查看:581  /  回复:0
本帖最后由 Ellia.Duan 于 2024-7-1 10:00 编辑

上文介绍的内容,本文将介绍如何设置“导入”为默认选中。
第一步还是先获取文件template
  1. var fileMenuPanelTemplate = GC.Spread.Sheets.Designer.getTemplate(GC.Spread.Sheets.Designer.TemplateNames.FileMenuPanelTemplate);
复制代码

第二步,修改node的visibleWhen。
我们观察下图
image.png289917906.png
“新建”按钮对应的visibleWhen是"activeCategory_main=New",而“导入”对应的visibleWhen对应的是"activeCategory_main=Import"
我们可以重设这两个值。因为默认选中的是"activeCategory_main=New"。
好的,我们接下来开始遍历node

  1. findNode(fileMenuPanelTemplate.content)

  2.         function findNode(node) {
  3.             if (node instanceof Array) {
  4.                 for (let i = 0; i < node.length; i++) {
  5.                     findNode(node[i])
  6.                 }
  7.             } else if (node.children) {
  8.                 if (node.visibleWhen == "activeCategory_main=New") {
  9.                     node.visibleWhen = "activeCategory_main=New_Other"
  10.                 } else if (node.visibleWhen == "activeCategory_main=Import") {
  11.                     node.visibleWhen = "activeCategory_main=New"
  12.                 }
  13.                 findNode(node.children)
  14.             }
  15.         }
复制代码

通过上述代码,我们将“新建”的visibleWhen 修改为activeCategory_main=New_Other ,而“导入”的visibleWhen 修改为activeCategory_main=New。
我们重新注册Template
  1. GC.Spread.Sheets.Designer.registerTemplate(GC.Spread.Sheets.Designer.TemplateNames.FileMenuPanelTemplate, fileMenuPanelTemplate);
  2.    
复制代码

执行代码,发现不生效,点击“文件” 进来的默认选中还是“新建”,这个是怎么回事呢?
我们再来看下左侧结点:全局搜索"新建",找到左侧的菜单结点
image.png910571288.png
我们观察上图,发现“新建”对应的value是“New” ,而“导入”对应的value是“import” 与上文中visibleWhen 等于号后面的内容一致。
我们试着修改下这个value .
  1. function findNode(node) {
  2.     if (node instanceof <em>Array</em>) {
  3.         for (let i = 0; i < node.length; i++) {
  4.             findNode(node[i])
  5.         }
  6.     } else if (node.children) {
  7.         if (node.visibleWhen == "activeCategory_main=New") {
  8.             node.visibleWhen = "activeCategory_main=New_Other"
  9.         } else if (node.visibleWhen == "activeCategory_main=Import") {
  10.             node.visibleWhen = "activeCategory_main=New"
  11.         }
  12.         findNode(node.children)
  13.     } else if (node.items) {
  14.         node.items.forEach(item => {
  15.             if (item.text == '新建') {
  16.                 item.value = 'New_Other'
  17.             } else if (item.text == '导入') {
  18.                 item.value = 'New'
  19.             }
  20.         })
  21.     }
  22. }
复制代码

在上述代码中,我们增加了node.items的判断,对新建的value修改为'New_Other',对导入的value修改为'New'
我们刷新下页面,看下是否已经实现了我们的需求:
db618b16-e7ae-40b9-8f52-4dace6f92044.gif
我们观察上面的动图,当点击“文件”时,已经实现了“导入”的默认选中。
本文的demo:
默认选择导入.html (4.09 KB, 下载次数: 52)

0 个回复

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