找回密码
 立即注册

QQ登录

只需一步,快速开始

sanyue
初级会员   /  发表于:2023-11-10 14:36  /   查看:820  /  回复:7
本帖最后由 sanyue 于 2023-11-10 14:39 编辑

设定getRange().locked(true)页面要么要等很久很久,要么就页面卡死

  1. spread.suspendPaint();
  2. for (let i = 0; i < sheetCount; i++) {
  3.         const sheet = spread.getSheet(i);
  4.         sheet.options.isProtected = true;
  5.         sheet.options.protectionOptions = {
  6.           allowFilter: true,
  7.         };
  8.         //主要是这一行,删掉就快了
  9.          sheet.getRange(0, 0, sheet.getRowCount(), sheet.getColumnCount()).locked(true);
  10.   }
  11. spread.resumePaint();
复制代码


7 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-11-10 15:19:29
沙发
您好,看到您通过sheet.getRange(0, 0, sheet.getRowCount(),sheet.getColumnCount()).locked(true);来设置锁定单元格,我们猜测您是希望将整张表的locked属性设置为锁定是吗?

我们想问一下,您的具体使用场景是什么?就仅仅是在工作簿初始化时锁定每个单元格并设置保护是吗?如果是的话我们完全可以通过设置默认样式来实现,而不用getRange的方式一个一个去设置。您可以将该代码替换为如下代码后进行测试:
var defaultStyle = new GC.Spread.Sheets.Style();
defaultStyle.locked= true;
sheet.setDefaultStyle(defaultStyle );

API参考:https://demo.grapecity.com.cn/sp ... eet#setdefaultstyle
https://demo.grapecity.com.cn/sp ... eet#getdefaultstyle
回复 使用道具 举报
sanyue
初级会员   /  发表于:2023-11-10 15:26:05
板凳
Richard.Huang 发表于 2023-11-10 15:19
您好,看到您通过sheet.getRange(0, 0, sheet.getRowCount(),sheet.getColumnCount()).locked(true);来设置 ...

是在执行完某个操作以后将页面设置成只读,初始化的时候会根据接口返回的数据,设定某些列只读
回复 使用道具 举报
sanyue
初级会员   /  发表于:2023-11-10 15:47:24
地板
Richard.Huang 发表于 2023-11-10 15:19
您好,看到您通过sheet.getRange(0, 0, sheet.getRowCount(),sheet.getColumnCount()).locked(true);来设置 ...

试了一下用这种写法没有效果
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-11-10 18:04:59
5#
sanyue 发表于 2023-11-10 15:47
试了一下用这种写法没有效果

您好,该方法没有生效的原因主要在于Locked属性设置的优先级问题,我观察到您之前有过关于这个优先级的帖子: image.png165110472.png
而默认样式则是优先级最低的,您可以排查一下没有生效的问题是否是已经存在了高优先级的样式存在了。

对于您上面两个具体的需求,从目前来看只能通过循环来实现了,请问您的数据量有多少?我在一个200*20的工作表上进行for循环设置locked属性,并没有感知有所卡顿,能否提供一份可供我们复现的demo,方便我们具体排查能否有好的优化方案
回复 使用道具 举报
sanyue
初级会员   /  发表于:2023-11-10 18:13:40
6#
Richard.Huang 发表于 2023-11-10 18:04
您好,该方法没有生效的原因主要在于Locked属性设置的优先级问题,我观察到您之前有过关于这个优先级的帖 ...

可能会有几十万行的数据
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-11-13 10:17:33
7#
您好,我们并不建议在几十万行数据的单元格上,对每一个单元格设置locked属性。您可以通过行、列来设置locked属性。
其次,几十万行数据,对于用户来说,是否适合数据填报的场景。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-11-29 17:24:27
8#
您好,由于您长时间未回帖,本贴就先作结帖处理了,后续如果有新的问题,欢迎发新帖询问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部