在线表格编辑器修改“文件”菜单(二)
本帖最后由 Ellia.Duan 于 2024-7-1 10:00 编辑接上文介绍的内容,本文将介绍如何设置“导入”为默认选中。
第一步还是先获取文件template
var fileMenuPanelTemplate = GC.Spread.Sheets.Designer.getTemplate(GC.Spread.Sheets.Designer.TemplateNames.FileMenuPanelTemplate);
第二步,修改node的visibleWhen。
我们观察下图
“新建”按钮对应的visibleWhen是"activeCategory_main=New",而“导入”对应的visibleWhen对应的是"activeCategory_main=Import"
我们可以重设这两个值。因为默认选中的是"activeCategory_main=New"。
好的,我们接下来开始遍历node
findNode(fileMenuPanelTemplate.content)
function findNode(node) {
if (node instanceof Array) {
for (let i = 0; i < node.length; i++) {
findNode(node)
}
} else if (node.children) {
if (node.visibleWhen == "activeCategory_main=New") {
node.visibleWhen = "activeCategory_main=New_Other"
} else if (node.visibleWhen == "activeCategory_main=Import") {
node.visibleWhen = "activeCategory_main=New"
}
findNode(node.children)
}
}
通过上述代码,我们将“新建”的visibleWhen 修改为activeCategory_main=New_Other ,而“导入”的visibleWhen 修改为activeCategory_main=New。
我们重新注册Template
GC.Spread.Sheets.Designer.registerTemplate(GC.Spread.Sheets.Designer.TemplateNames.FileMenuPanelTemplate, fileMenuPanelTemplate);
执行代码,发现不生效,点击“文件” 进来的默认选中还是“新建”,这个是怎么回事呢?
我们再来看下左侧结点:全局搜索"新建",找到左侧的菜单结点
我们观察上图,发现“新建”对应的value是“New” ,而“导入”对应的value是“import” 与上文中visibleWhen 等于号后面的内容一致。
我们试着修改下这个value .
function findNode(node) {
if (node instanceof <em>Array</em>) {
for (let i = 0; i < node.length; i++) {
findNode(node)
}
} else if (node.children) {
if (node.visibleWhen == "activeCategory_main=New") {
node.visibleWhen = "activeCategory_main=New_Other"
} else if (node.visibleWhen == "activeCategory_main=Import") {
node.visibleWhen = "activeCategory_main=New"
}
findNode(node.children)
} else if (node.items) {
node.items.forEach(item => {
if (item.text == '新建') {
item.value = 'New_Other'
} else if (item.text == '导入') {
item.value = 'New'
}
})
}
}
在上述代码中,我们增加了node.items的判断,对新建的value修改为'New_Other',对导入的value修改为'New'
我们刷新下页面,看下是否已经实现了我们的需求:
我们观察上面的动图,当点击“文件”时,已经实现了“导入”的默认选中。
本文的demo:
在下篇文章中,我们将介绍,如何在文件菜单中,只显示“打印预览”。
页:
[1]