找回密码
 立即注册

QQ登录

只需一步,快速开始

Melody

中级会员

29

主题

63

帖子

591

积分

中级会员

积分
591

微信认证勋章

Melody
中级会员   /  发表于:2020-11-3 16:05  /   查看:3119  /  回复:5
使用这中方式折叠分组 当大量数据(2W)折叠所需时间35803 毫秒 ,
var rgi = sheet.rowOutlines.find(1,0) ;sheet.rowOutlines.expandGroup(rgi,false);


实际代码:
sheet.rowOutlines.group(startIndex, count);
// 默认折叠
level = sheet.rowOutlines.getLevel(startIndex);
rgi = sheet.rowOutlines.find(startIndex, level);
sheet.rowOutlines.expandGroup(rgi, false);

5 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-3 16:58:23
沙发
您好,建议您在需要做出大量的变更前用spread.suspendPaint();挂起绘制,完成更改后用 spread.resumePaint();恢复绘制,您可以参考:
https://demo.grapecity.com.cn/sp ... ook/painting/purejs

若上述方案没能解决您的问题建议您上传能复现问题的demo
回复 使用道具 举报
Melody
中级会员   /  发表于:2020-11-4 09:59:47
板凳
DerrickJiao 发表于 2020-11-3 16:58
您好,建议您在需要做出大量的变更前用spread.suspendPaint();挂起绘制,完成更改后用 spread.resumePaint( ...

// 模拟分组次数      

for (var i=1;i<20000;i= i+2) {         

                sheet.rowOutlines.group(i, 10);
                // 默认折叠 注释这个部分 耗时就会短的多
                level = sheet.rowOutlines.getLevel(startIndex);
                rgi = sheet.rowOutlines.find(startIndex, level);
                sheet.rowOutlines.expandGroup(rgi, false);
            }   

demo.rar

1.69 KB, 下载次数: 47

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-4 10:44:21
地板
Melody 发表于 2020-11-4 09:59
// 模拟分组次数      

for (var i=1;i

您把不需要循环的代码放到循环外面即可。
原本只需执行一遍的代码放到循环里面就需要重复执行1万+遍,自然就会消耗较大的性能。
您参考下图,把不需要循环的代码放置循环外,这样折叠分组的时间就短了



截屏2020-11-04 上午10.39.52.png
回复 使用道具 举报
Melody
中级会员   /  发表于:2020-11-4 11:24:27
5#
DerrickJiao 发表于 2020-11-4 10:44
您把不需要循环的代码放到循环外面即可。
原本只需执行一遍的代码放到循环里面就需要重复执行1万+遍,自 ...


           for (var i=1;i<20000;i= i+2) {         
                sheet.rowOutlines.group(i, 10);
            }       
                        // 默认折叠
            level = sheet.rowOutlines.getLevel(1);
            rgi = sheet.rowOutlines.find(1, level);
            sheet.rowOutlines.expandGroup(rgi, false);

上述代码应该指挥折叠第一行吧,展开后第一行数据后其它都是展开状态
我想实现的效果是 每个都是折叠的 UCDC9O{6[QLWF(~D48K1`N5.png }@Z1G[MNK9ZV%1A]HFBDO.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-4 14:05:18
6#

您可以参考下面的代码为给每个层级都设置折叠
  1. var rgi = sheet.rowOutlines.find(1, 0);
  2.             var rgi2 = sheet.rowOutlines.find(3, 1);
  3.             var rgi3 = sheet.rowOutlines.find(5, 2);
  4.             var rgi4 = sheet.rowOutlines.find(7, 3);
  5.             var rgi5 = sheet.rowOutlines.find(9, 4);
  6.             
  7.             sheet.rowOutlines.expandGroup(rgi, false);
  8.             sheet.rowOutlines.expandGroup(rgi2, false);
  9.             sheet.rowOutlines.expandGroup(rgi3, false);
  10.             sheet.rowOutlines.expandGroup(rgi4, false);
  11.             sheet.rowOutlines.expandGroup(rgi5, false);
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部