找回密码
 立即注册

QQ登录

只需一步,快速开始

artman5545

中级会员

31

主题

93

帖子

901

积分

中级会员

积分
901
artman5545
中级会员   /  发表于:2018-3-21 15:19  /   查看:4538  /  回复:9
本帖最后由 artman5545 于 2018-3-21 16:25 编辑

我在做一个表格的时候遇到很严重的性能问题:页面加载数据很快,但是添加验证后慢的让人绝望,数据1000条有27列,如果注释了156行的验证后性能提升很显著,请问有解决方法吗?脚本如下:
1.png
这是没有注释156行的加载速度,如果增加到6000条数据浏览器会崩溃
2.png
1.png

9 个回复

倒序浏览
lin123
注册会员   /  发表于:2018-3-21 15:45:29
推荐
按区域设置试试看,分三块设置验证试试
格式:setDataValidator(row, col, rowCount, colCount, value, sheetArea);
          activeSheet.setDataValidator(1,1,1,1,dv,GC.Spread.Sheets.SheetArea.viewport);
回复 使用道具 举报
lin123
注册会员   /  发表于:2018-3-21 15:32:40
沙发
第一个for循环
  1. for(var i =0,len = dataSource.length;i<len;i++)
复制代码

你试一下看看有没有提升
回复 使用道具 举报
artman5545
中级会员   /  发表于:2018-3-21 15:48:24
地板
lin123 发表于 2018-3-21 15:32
第一个for循环

你试一下看看有没有提升

没看到性能改善
回复 使用道具 举报
lin123
注册会员   /  发表于:2018-3-21 15:55:44
5#
那你等等版主看看怎么解决?我也只是个新人
回复 使用道具 举报
artman5545
中级会员   /  发表于:2018-3-21 16:06:48
6#
lin123 发表于 2018-3-21 15:45
按区域设置试试看,分三块设置验证试试
格式:setDataValidator(row, col, rowCount, colCount, value, sh ...

NICE!,性能提升很大,但是我好像以区域设置格式没成功,不知道支持这种不sheet.setFormatter(0, 7, rowCount, 1, "yyyy/mm/dd", GC.Spread.Sheets.SheetArea.viewport);
回复 使用道具 举报
lin123
注册会员   /  发表于:2018-3-21 16:22:35
7#
你看看有没有这个
sheet.getRange(0,7,1,1).formatter("yyyy");

评分

参与人数 1金币 +200 收起 理由
Clark.Pan + 200 感谢回复

查看全部评分

回复 使用道具 举报
artman5545
中级会员   /  发表于:2018-3-21 16:24:16
8#
谢谢,问题已经解决,试用遍历单元格的方式设置格式对性能影响不大,可以接受了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-21 18:50:36
9#
本帖最后由 DerrickJiao 于 2020-6-15 11:28 编辑

您好,不好意思,今天有事情耽搁了回复晚了,您这样试一下,在循环之前使用suspendPaint组织重绘,在循环完毕后用resumePaint统一进行重绘,这样应该能够大幅度增加性能,重绘这块参考:
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/worksheet/sheet-paint/purejs
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-21 18:51:39
10#
lin123 发表于 2018-3-21 16:22
你看看有没有这个
sheet.getRange(0,7,1,1).formatter("yyyy");

非常感谢您的回答,今天有事耽搁了,回复晚了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部