Clark.Pan 发表于 2020-5-5 21:12:34

表单保护相关问题总结

表单保护一直都是Excel的一个常用功能,在SpreadJS中也是如此,用户经常通过设置表单保护来进行填报权限的控制。该贴将整理表单保护相关的典型问题,不定期更新,供大家随时参阅。
1.SpreadJS表单保护的机制:

表单保护的机制和Excel一样需要同时设定锁定(locked)和保护(Protect)两个状态为true,才能让单元格禁止编辑。
2.所有单元格都不能编辑
这里的locked属性默认所有的单元格的locked属性都是true,换而言之在默认状态下,只要将Protect的状态设置为true,就可以做到所有单元格都不能编辑。

否则则需要将所有的单元格locked属性设置为true后再设置表单保护。
3.设置默认单元格的锁定状态为false
var defaultStyle = sheet.getDefaultStyle();
defaultStyle.locked = false;
sheet.setDefaultStyle(defaultStyle);4.复制取消保护单元格之后复制后的单元格为保护状态
表单保护的状态下是无法复制locked属性的,非表单保护状态下可以复制。
解决这个问题的办法是,在事件中copyto之前先将表单保护的状态设置为false,然后copyto结束后再设置为true
document.getElementById('btnCopy').addEventListener('click', function() {
            sheet.options.isProtected = false;
            sheet.copyTo(5, 4, 5, 7, 7, 1, spreadNS.CopyToOptions.all);
            sheet.options.isProtected = true;
});5.sheet页密码保护相关
参考这篇博客
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=72318&extra=page%3D2
6.保护工作簿里面的几行
如果我们不希望单元格被编辑,只要给单元格设置一个locked 为true的style即可,如果整行都不希望被编辑,使用setStyle方法时第二个参数设置为-1,那么这一行都被locked了。整列则反之,第一个参数为-1
https://demo.grapecity.com.cn/spreadjs/help/latest/content/SpreadJS~GC.Spread.Sheets.CellRange~locked.html
设置完之后再设置sheet.options.isProtected = true;
7.保护之后允许调整行款列高
sheet.options.protectionOptions.allowResizeRows = true;
sheet.options.protectionOptions.allowResizeColumns = true;8.锁定的单元格不允许点击
sheet.options.protectionOptions.allowSelectLockedCells = false;





Tom猫 发表于 2022-5-10 11:48:46

收藏喽:hjyzw:

Clark.Pan 发表于 2022-5-10 14:03:06

{:5_107:}
页: [1]
查看完整版本: 表单保护相关问题总结