找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

261

帖子

1682

积分

超级版主

Rank: 8Rank: 8

积分
1682
Winny
超级版主   /  发表于:2021-10-22 11:02  /   查看:2512  /  回复:0
本帖最后由 Winny 于 2021-10-22 11:04 编辑

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

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


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

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






0 个回复

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