找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

130

主题

246

帖子

1528

积分

超级版主

Rank: 8Rank: 8

积分
1528
Winny
超级版主   /  发表于:2023-4-27 10:07  /   查看:1147  /  回复:2
应用场景:在表单保护中,表头的工具栏可用性会跟随保护属性同步状态。如当表单中部分单元格处于锁定状态,部分单元格未锁定时,添加表单保护时,设置允许设置单元格格式(sheet.options.protectionOptions.formatCells=true)时,会导致无论选中的是否是锁定单元格,工具栏上方设置单元格格式的相关按钮都是可以使用的,这一点其实与Excel中的行为是一致的。

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

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

核心代码:
  1. sheet.bind(GC.Spread.Sheets.Events.CellClick,function(e,info){
  2.     let {row,col} = info
  3.     let isLock = sheet.getCell(row,col).locked()
  4.     if(isLock){
  5.         sheet.options.protectionOptions.formatCells = false
  6.     }else{
  7.          sheet.options.protectionOptions.formatCells = true
  8.     }
  9.     designer.refresh()
  10. })
复制代码


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

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

2 个回复

倒序浏览
阿仁
金牌服务用户   /  发表于:2023-12-20 14:18:23
沙发
您好,那如果我想具体控制某个按钮的可用呢,我设置保护之后需要分组和取消分组可用。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-20 14:54:17
板凳
阿仁 发表于 2023-12-20 14:18
您好,那如果我想具体控制某个按钮的可用呢,我设置保护之后需要分组和取消分组可用。

您好,我已经在之前的帖子中回复您了,您参考一下。https://gcdn.grapecity.com.cn/showtopic-199377-2-1.html
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部