本帖最后由 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")[0])
复制代码
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[i].visible = true
- }
复制代码
|
|