Winny 发表于 2023-4-27 10:07:06

表单保护动态控制工具栏按钮可用性

应用场景:在表单保护中,表头的工具栏可用性会跟随保护属性同步状态。如当表单中部分单元格处于锁定状态,部分单元格未锁定时,添加表单保护时,设置允许设置单元格格式(sheet.options.protectionOptions.formatCells=true)时,会导致无论选中的是否是锁定单元格,工具栏上方设置单元格格式的相关按钮都是可以使用的,这一点其实与Excel中的行为是一致的。

但在web端,客户想要的效果其实是根据单元格的锁定状态,动态的去控制顶部工具栏按钮的可用性。

实现方案:借助事件监听,动态的去更新表单保护时的相关属性。

核心代码:
sheet.bind(GC.Spread.Sheets.Events.CellClick,function(e,info){
    let {row,col} = info
    let isLock = sheet.getCell(row,col).locked()
    if(isLock){
      sheet.options.protectionOptions.formatCells = false
    }else{
         sheet.options.protectionOptions.formatCells = true
    }
    designer.refresh()
})

重要提示:当前示例中,是用单元格点击事件来做的,但是在实际客户操作中,会有不少的区域设置,这时需要考虑换用其它的监听事件方式。SpreadJS中提供的事件可以参考:事件列表。同时,涉及区域选中或多选区时,如果既包含锁定单元格,又包含非锁定单元格,需要如何设置工具栏状态,也需要根据业务考虑。

详细的demo可以点击这里了解。

阿仁 发表于 2023-12-20 14:18:23

您好,那如果我想具体控制某个按钮的可用呢,我设置保护之后需要分组和取消分组可用。

Joestar.Xu 发表于 2023-12-20 14:54:17

阿仁 发表于 2023-12-20 14:18
您好,那如果我想具体控制某个按钮的可用呢,我设置保护之后需要分组和取消分组可用。

您好,我已经在之前的帖子中回复您了,您参考一下。https://gcdn.grapecity.com.cn/showtopic-199377-2-1.html
页: [1]
查看完整版本: 表单保护动态控制工具栏按钮可用性