Winny 发表于 2023-6-9 17:47:05

自定义工具栏-复选框及可用状态切换

需求场景:

    在线表格编辑器添加复选按钮,并控制其可用状态。

实现方法:
    (1)添加复选按钮:designer的config添加需要操作的按钮,声明相关命令并注册。核心代码如下:
let config = JSON.parse(JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig))
    // 新增Tab
    let customerRibbon = {
      id: "operate",
      text: "自定义操作",
      buttonGroups: [
            {
                label: "自定义行为",
                commandGroup: {
                  children: [
                        {
                            direction: "vertical",
                            commands: ["changeLineVisible"]
                        }
                  ]
                }
            }
      ]
    }
    // 定义数据保存点击命令
    let changeLineVisibleExec = {
      text: '显示打印分页线',
      type: "checkbox",
      enableContext: ISENABLED,
      commandName: "changeLineVisible",
      execute: (context) => {
                let sheet = context.getWorkbook().getActiveSheet();
                var isVisible = sheet.isPrintLineVisible();
                sheet.isPrintLineVisible(!isVisible);
            },
      getState: (context) => {
            // getState用于控制复选框的选中状态
            let sheet = context.getWorkbook().getActiveSheet();   
            //设置 checkBox 初始状态         
            return sheet.isPrintLineVisible();   //初始为未选中状态
      }
    }上述代码中,getState()可以用于控制复选框是否选中的状态。
(2)控制复选框是否可用
在声明命令时,enableContext用于控制复选框是否可用,之后可以使用designer.setData()设置复选框是否可用。核心代码如下:
// 控制复选框是否可用的参数
const ISENABLED = "isEnabled"
// 定义数据保存点击命令
    let changeLineVisibleExec = {
      text: '显示打印分页线',
      type: "checkbox",
      enableContext: ISENABLED,
      commandName: "changeLineVisible",
      execute: (context) => {
                let sheet = context.getWorkbook().getActiveSheet();
                var isVisible = sheet.isPrintLineVisible();
                sheet.isPrintLineVisible(!isVisible);
            },
      getState: (context) => {
            // getState用于控制复选框的选中状态
            let sheet = context.getWorkbook().getActiveSheet();   
            //设置 checkBox 初始状态         
            return sheet.isPrintLineVisible();   //初始为未选中状态
      }
    }
// 控制复选是否可用状态
designer.setData(ISENABLED, true)



完整的示例demo可点击链接查看。

页: [1]
查看完整版本: 自定义工具栏-复选框及可用状态切换