找回密码
 立即注册

QQ登录

只需一步,快速开始

super825

初级会员

11

主题

33

帖子

271

积分

初级会员

积分
271

微信认证勋章

QQ
super825
初级会员   /  发表于:2017-7-19 19:58  /   查看:3130  /  回复:3
最近在封装控件,测试了下控件的性能,显示树结构加分组,1000行100列9s多,用性能工具看了下,发现,自己写的initStyle方法耗时比较久,原因是function initStyle(){
    for(var row in rows){
          for(var col in columns){
                //设置单元格的样式和编辑器,项目要求,每行的单元格要根据数据显示不同的情况
          }
    }
}
请问有没有更好的实现建议,这样实现性能太慢,如果不调用这个方法,时间是400多毫秒,差太远了

另自定义单元格显示为什么不能暴露成
function customFormatter(args){
    var item = args.data;   //行数据
    var col = args.col;   //列数据
}

还有自定义编辑器不支持HTML,html5画图写起来太麻烦了

3 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-20 16:08:12
沙发
您好,第一个问题您在初始化时加入spread.suspendPaint();暂停绘制,然后在全部绘制结束后调用resumePaint重新激活绘制,这样做可以大幅度的提升性能。相关文档您可以参考:
http://demo.gcpowertools.com.cn/ ... samples/spreadPaint
另外您如果一行或一列的样式是一致的您可以使用范围进行设置样式,例如
activeSheet.setStyle(1,-1,style,GC.Spread.Sheets.SheetArea.viewport);给第二行整行设置样式。
第二个问题:
很抱歉,不是很明白您说的意思,请您详细的描述一下暴露成您说的这样的原因。

第三个问题:
使用HTML5从性能上来讲是最优的,所以我们采取这样的方式来完成。
回复 使用道具 举报
super825
初级会员   /  发表于:2017-7-24 22:07:11
板凳
问题解决了,需要自定义CellType,然后重写paint,可以在这里控制显示格式,但是行数据要自己在构造里传个rowMaps进去,扩展还是太不人性化,希望改进,另CellType还可以自定义编辑器,也就是说如果你的行数据里同一列的单元格要求显示不一样时,只能先指定列的CellType,再在CellType里指定列中单元格显示格式
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-25 16:29:09
地板
super825 发表于 2017-7-24 22:07
问题解决了,需要自定义CellType,然后重写paint,可以在这里控制显示格式,但是行数据要自己在构造里传个r ...

您好,您提出产品的意见我会向相关部门进行反馈,感谢您的宝贵意见和建议。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部