Winny 发表于 2021-10-22 11:02:03

V14.2.0之后designer获取与当前工作簿绑定的状态栏

本帖最后由 Winny 于 2021-10-22 11:04 编辑

在spreadjsV14.2.0之前,使用设计器时,是无法获取与当前工作簿绑定的状态栏的。而在V14.2.0之后,加了单独的接口获取与当前设计器中工作簿相关联的状态栏。
本文主要介绍在V14.2.0之后,如何从设计器中获取到当前的状态栏,之后对状态栏进行定义,具体实现方式如下:
step1: 引入designer相关资源
注意一定要引入V14.2.0之后的资源包

step2:获取designer中当前工作簿绑定的状态栏
let designer = new GC.Spread.Sheets.Designer.Designer(document.getElementById('designer-container'))
let spread = designer.getWorkbook()
// V14.2.0之后获取状态栏
let statusBar =GC.Spread.Sheets.StatusBar.findControl(document.getElementsByClassName("gc-statusBar"))


step3:自定义状态栏
(1) 删除某一项
首先可以将当前状态栏包含的菜单项都打印出来,可以使用statusBar.all(),打印截图如下:

可以看到,状态项是一个Object类型的数组,每个数据项包含一些特定的属性。如此看来,想要删除某一项就比较简单,只要删除对应的数组项即可。如此可以想到使用数组的splice()方法即可。但其实SpreadJS提供了删除状态项的API,对应的方法为statusBar.remove(name),需要传递的参数即为每一个数组元素中name属性对应的值。以删除单元格模式为例,对应的方法为:
let statusItem = statusBar.all()
statusBar.remove('cellMode')
(2) 添加状态项
添加状态项也比较简单,即创建一个StatusItem对象,之后将其添加到状态栏即可。以添加一个获取当前活动表单名称的菜单项为例,代码如下:// 在创建StatusItem时,如果value值为空字符串,则默认不会显示在状态栏上,右键状态栏菜单可以看到,否则会显示在状态栏上。
            let spanItem = new GC.Spread.Sheets.StatusBar.StatusItem('myInfo', {menuContent: '名称',value: '',align: 'right'})
            spanItem.onBind = function(context){
                this.value =context.getActiveSheet().name()
            }
            statusBar.add(spanItem)

与状态栏相关的方法还有很多,具体可以参考:
https://demo.grapecity.com.cn/sp ... Bar.StatusItem.html
(3)状态栏右键菜单状态项全选
根据之前截图可以看到,每一个菜单项均有一个visible属性,想要全部勾选,只需要将该属性都设置为true即可,具体代码如下:
let itemLists = statusBar.all()
            for(let i=0; i<itemLists.length; i++){
                itemLists.visible = true
            }






页: [1]
查看完整版本: V14.2.0之后designer获取与当前工作簿绑定的状态栏