找回密码
 立即注册

QQ登录

只需一步,快速开始

fgb1990

注册会员

11

主题

20

帖子

93

积分

注册会员

积分
93
fgb1990
注册会员   /  发表于:2020-10-13 18:52  /   查看:3296  /  回复:7
本帖最后由 fgb1990 于 2020-10-14 15:30 编辑

设置 style.locked = false;后也还是不能编辑,但其他普通的单元格可以编辑,只有设置复选框的列不行




7 个回复

倒序浏览
Fiooona
论坛元老   /  发表于:2020-10-14 08:42:35
沙发
正常不会出现这个问题,只有同事设置了表单保护 和单元格锁定单元格才不能编辑,我能想到的原因是样式优先级的影响,可能您复选框的单元格还是被锁定的,具体需要您提供一个复现这个问的Demo才好定位问题。
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
fgb1990
注册会员   /  发表于:2020-10-14 09:11:05
板凳
本帖最后由 fgb1990 于 2020-10-14 09:25 编辑
Fiooona 发表于 2020-10-14 08:42
正常不会出现这个问题,只有同事设置了表单保护 和单元格锁定单元格才不能编辑,我能想到的原因是样式优先 ...

确实加上单元格级别的样式就可以编辑了,但是我不明白为什么其他没用复选框的列,只用列级别的样式就可以编辑,有复选框的列就不行。另外加单元格级别的样式后,页面加载会慢很多。请看代码:
        sheet.options.isProtected = true;
        var styleCanEdit = new GC.Spread.Sheets.Style();
        styleCanEdit.locked = false;
        var styleNoCanEdit = new GC.Spread.Sheets.Style();
        styleNoCanEdit.locked = true;
        sheet.setStyle(-1, -1, styleNoCanEdit, GC.Spread.Sheets.SheetArea.viewport);
        sheet.setStyle(-1, 9, styleCanEdit, GC.Spread.Sheets.SheetArea.viewport);
        sheet.setStyle(-1, 10, styleCanEdit, GC.Spread.Sheets.SheetArea.viewport);
        sheet.setStyle(-1, 11, styleCanEdit, GC.Spread.Sheets.SheetArea.viewport);
        for (let index = 0; index < sheet.getRowCount(); index++) {
          sheet.setStyle(index, 10, styleCanEdit, GC.Spread.Sheets.SheetArea.viewport);
        }
        var c = new GC.Spread.Sheets.CellTypes.CheckBox();
        sheet.setCellType(-1, 10, c, GC.Spread.Sheets.SheetArea.viewport);
还有一个问题:点击复选框单元格的时候为什么不会触发cellClick()事件?

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-14 12:08:57
地板
1、您可以用spread.suspendPaint();在设置前暂停绘制,设置完成后用spread.resumePaint();恢复绘制,能提升表单的渲染速度,您可以参考学习指南
https://demo.grapecity.com.cn/sp ... ook/painting/purejs

2、复选框的勾选无法触发cellClick事件,建议您用ValueChanged事件,这是API链接
https://demo.grapecity.com.cn/sp ... #event:ValueChanged
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-10-14 12:28:17
5#
您在改变表单的样式前后 添加暂停、恢复绘制,可以解决渲染慢的问题:sheet.suspendPaint  sheet.resumePaint

另一个问题,点击复选框会触发的事件是:ButtonClicked 不会触发cellClick
参考:
https://demo.grapecity.com.cn/sp ... event:ButtonClicked
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
fgb1990
注册会员   /  发表于:2020-10-14 15:24:27
6#
DerrickJiao 发表于 2020-10-14 12:08
1、您可以用spread.suspendPaint();在设置前暂停绘制,设置完成后用spread.resumePaint();恢复绘制,能提升 ...

非常感谢问题已解决
回复 使用道具 举报
fgb1990
注册会员   /  发表于:2020-10-14 15:26:28
7#
Fiooona 发表于 2020-10-14 12:28
您在改变表单的样式前后 添加暂停、恢复绘制,可以解决渲染慢的问题:sheet.suspendPaint  sheet.resumePai ...

非常感谢,问题已经解决
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-14 15:39:51
8#
fgb1990 发表于 2020-10-14 15:24
非常感谢问题已解决

解决了就好,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部