找回密码
 立即注册

QQ登录

只需一步,快速开始

前端小蚂蚁
注册会员   /  发表于:2024-5-27 16:32  /   查看:2596  /  回复:13
2金币
本帖最后由 Richard.Huang 于 2024-5-29 16:14 编辑

产品:SpreadJS
版本:V14.2.6

项目中,对不同的sheet 页签,后台接口使用数组会告诉前端哪些行或者单元格不能编辑,请问怎么实现多行不能编辑,并且可以设置整行为深灰色,目前知道优先级:单元格>行>列

13 个回复

正序浏览
前端小蚂蚁
注册会员   /  发表于:2024-5-30 19:35:51
13#
Joestar.Xu 发表于 2024-5-30 17:55
您好,首先不要在循环中绑定事件,这会消耗大量的性能。

另外这里的设置样式我没太看懂,为什么要重新设 ...

是这样的,有很多单元格不能编辑需要锁住,所以是个数组,那么我对数组遍历,然后在里面通过对每一个单元格调用setStyle(),确实很耗性能,页面都卡住不动,所以找顾问看下怎么优化。
回复 使用道具 举报
前端小蚂蚁
注册会员   /  发表于:2024-5-30 18:06:48
12#
Joestar.Xu 发表于 2024-5-30 17:55
您好,首先不要在循环中绑定事件,这会消耗大量的性能。

另外这里的设置样式我没太看懂,为什么要重新设 ...

项目中页面有一个控制是否编辑的按钮开关,editFinishNode是开关的布尔值,if &else 就是锁和解锁的过程,不在循环中绑定事件,那么怎么处理呢?我这里不需要修改单元格的背景颜色
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-30 17:55:20
11#
您好,首先不要在循环中绑定事件,这会消耗大量的性能。

另外这里的设置样式我没太看懂,为什么要重新设置一遍?

image.png232514342.png

如果是要修改单元格的背景色,请使用bakcColor来修改。https://demo.grapecity.com.cn/sp ... ets.Style#backcolor
回复 使用道具 举报
前端小蚂蚁
注册会员   /  发表于:2024-5-30 15:07:42
10#
Richard.Huang 发表于 2024-5-28 14:02
您可以考虑再for循环前后添加sheet.suspendPaint()和sheet.resumePaint()方法来提高渲染性能

我在spread.formJSON().loaded) => {} 这个方法里遍历单元格,并锁定单元格
回复 使用道具 举报
前端小蚂蚁
注册会员   /  发表于:2024-5-30 14:59:22
9#
Richard.Huang 发表于 2024-5-28 14:02
您可以考虑再for循环前后添加sheet.suspendPaint()和sheet.resumePaint()方法来提高渲染性能

我尝试着用了你说的方法,暂停绘制,恢复绘制,但是页面时空白,切换了sheet页签页面也是空白,如下面截图:

企业微信截图_17170520624366.png74986876.png
部分代码:
企业微信截图_1717052249725.png431553649.png
目前800多个单元格要遍历很卡,有时候页面直接奔溃,要怎么写才不会卡,也不会白屏,这个比较急。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-28 14:02:36
8#
前端小蚂蚁 发表于 2024-5-28 13:45
但是单元格几千个需要遍历,spreadjs 卡住了进度,有没有好的方法

您可以考虑再for循环前后添加sheet.suspendPaint()和sheet.resumePaint()方法来提高渲染性能
回复 使用道具 举报
前端小蚂蚁
注册会员   /  发表于:2024-5-28 13:45:13
7#
Richard.Huang 发表于 2024-5-28 12:16
您好,是的,V15版本才支持IRange类才支持setStyle方法。14版本只能for循环通过sheet.setStyle()来实现您 ...

但是单元格几千个需要遍历,spreadjs 卡住了进度,有没有好的方法
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-28 12:16:51
6#
前端小蚂蚁 发表于 2024-5-28 12:10
我的是v14.2.6版本,跟版本有关系吗?

您好,是的,V15版本才支持IRange类才支持setStyle方法。14版本只能for循环通过sheet.setStyle()来实现您的需求
回复 使用道具 举报
前端小蚂蚁
注册会员   /  发表于:2024-5-28 12:10:50
5#
Richard.Huang 发表于 2024-5-28 12:03
您好,我在SpreadJSV17.0.9中进行了测试,并没有复现您的问题,请问能否提供一份可供我们复现的demo,方 ...

我的是v14.2.6版本,跟版本有关系吗?
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-28 12:03:18
4#
前端小蚂蚁 发表于 2024-5-28 11:54
我使用了你说的方法去做的,用了有报错, setStyle is not a function, 什么原因呢?帮我看下,下面截图所 ...

您好,我在SpreadJSV17.0.9中进行了测试,并没有复现您的问题,请问能否提供一份可供我们复现的demo,方便我们进行测试和调研
image.png834254760.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部