找回密码
 立即注册

QQ登录

只需一步,快速开始

zgpinguo

注册会员

7

主题

22

帖子

115

积分

注册会员

积分
115
zgpinguo
注册会员   /  发表于:2016-11-27 23:24  /   查看:7206  /  回复:11
本帖最后由 zgpinguo 于 2016-11-27 23:33 编辑

我有300个单元格需要渲染成下拉列表,但是慢,需要20秒,时间有点长,怎么破
不渲染下拉列表的情况是200ms,
差距有点大。
前提:下拉列表数据是事先准备好的

11 个回复

倒序浏览
CCKan
银牌会员   /  发表于:2016-11-28 09:04:01
沙发
你能否提供一个能够重现问题的 Sample ? 否则我们也不知道哪个地方有问题
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-11-28 10:50:12
板凳
你是否有使用isPaintSuspended批量操作前后一定要加
spread.isPaintSuspended(true);
.......
spread.isPaintSuspended(false);

http://demo.gcpowertools.com.cn/ ... samples/spreadPaint
回复 使用道具 举报
zgpinguo
注册会员   /  发表于:2016-11-28 13:15:00
地板
CCKan 发表于 2016-11-28 09:04
你能否提供一个能够重现问题的 Sample ? 否则我们也不知道哪个地方有问题
  1. function fillData(sheet, data) {
  2.         console.time("fillData");
  3.         var row = parseInt($("#startRow").val());
  4.         var col = parseInt($("#startColumn").val());
  5.         var length = data.length;
  6.        
  7.         var rowArray = new Array();
  8.         for ( var i = 0; i < length; i++) {
  9.                 var columnArray = new Array();
  10.                 var item = data[i];
  11.                         $(item.dataList).each(function(j, value) {
  12.                                 var nowColumn = col + j;
  13.                                 var v = value["text"];;
  14.                                 if (nowColumn in dicColumn) {
  15.                                         if (hasLength(value["value"]) && !isNaN(value["value"])) {
  16.                                                 v = parseInt(value["value"]);
  17.                                         } else {
  18.                                         }
  19.                                 } else {
  20.                                 }
  21.                                 if(!hasLength(v)){
  22.                                         v = "";
  23.                                 }
  24.                                 columnArray.push(v);
  25.                         });
  26.                         rowArray.push(columnArray);
  27.         }
  28.        
  29.                 for (var c in dicColumn) {
  30.                         var combo = cache.getCache(dicColumn[c]);
  31.                         for(var i=row+1;i<=row+length;i++){
  32.                                 sheet.getCell(i, c).cellType(combo);
  33.                         }
  34.                 }
  35.                 console.log(rowArray);
  36.                 spread.getActiveSheet().setArray(row+1, col, rowArray);
  37.         console.timeEnd("fillData");
  38. }
复制代码
回复 使用道具 举报
zgpinguo
注册会员   /  发表于:2016-11-28 13:15:51
5#
dexteryao 发表于 2016-11-28 10:50
你是否有使用isPaintSuspended批量操作前后一定要加
spread.isPaintSuspended(true);
.......

这个我已经加了
回复 使用道具 举报
zgpinguo
注册会员   /  发表于:2016-11-28 13:17:25
6#

总共5列,60行,300个单元格
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-11-28 14:00:52
7#
本帖最后由 dexteryao 于 2016-11-28 14:03 编辑

,您好,我循环设置2000个单元格也没有延时的。如果您还有问题,可否发一个可以运行的Demo
  1.                         var sheet = spread.sheets[0]
  2.                                         spread.isPaintSuspended(true);
  3.                         console.log(new Date())
  4.                                        
  5.                          for (var j=0;j<20;j++) {
  6.                               var combo = ["sdfds","fsd"]
  7.                                 var cb = new GcSpread.Sheets.ComboBoxCellType()
  8.                                 cb.items(combo);
  9.                               for(var i=0;i<100;i++){
  10.                                       sheet.getCell(i, j).cellType(cb);
  11.                                    }
  12.                 }
  13.                         
  14.                         
  15.                         
  16.                         spread.isPaintSuspended(false);
  17.                         console.log(new Date())
复制代码
回复 使用道具 举报
zgpinguo
注册会员   /  发表于:2016-11-30 13:02:33
8#
dexteryao 发表于 2016-11-28 14:00
,您好,我循环设置2000个单元格也没有延时的。如果您还有问题,可否发一个可以运行的Demo

帮忙看下,http://gcdn.gcpowertools.com.cn/showtopic-27522-1-1.html  谢了
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-11-30 19:23:51
9#
下拉菜单这个问题解决了吗
回复 使用道具 举报
zgpinguo
注册会员   /  发表于:2016-11-30 22:10:52
10#
dexteryao 发表于 2016-11-30 19:23
下拉菜单这个问题解决了吗

解决了谢谢
spread.isPaintSuspended(true);
                                //可能中间 ajax下拉列表的数据,影响了,我把ajax下拉列表数据领出来就很快了
                                spread.isPaintSuspended(false);
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部