以下是我的代码,整体意思是:当点击按钮时,加载json数据到SpreadJS在线表格编辑器中,然后将数组中的数据通过setValue函数设置到
指定的单元格中,数组大概有2000多个元素,相当于要设置2000多个单元格的值,在给单元格赋值之前和之后分别计时,即代码中的time1和time2,
发现这个过程要26秒钟,并且使不使用theSpread.isPaintSuspended(true)的耗时都一样,相当于停止重绘没起到作用,请问这是为什么呢?
还有没有好的方法或解决方案来快速为多个单元格赋值(这些单元格不是连在一起的)?
打开一张报表要用户等待30秒是在是要崩溃啊!!!
theSpread.isPaintSuspended(true); //停止重绘
theSpread.fromJSON(JSON.parse(json["theData"])); //加载模板数据
var sheetCount = theSpread.getSheetCount();
var theSheetAry = new Array(); //预先获取所有的工作页
for (var i = 0; i < sheetCount; i++)
{
theSheetAry.push(theSpread.getSheet(i));
}
var time1 = Ext.Date.format(new Date(), "Y-m-d H:i:s"); //开始计时
//将补充数据设置到各单元格
var cellsJson = eval('(' + json["theDataPlus"] + ')');
for (var i = 0; i < cellsJson.length; i++)
{
var cellJson = cellsJson[i];
theSheetAry[cellJson["i"]].setValue(cellJson["j"], cellJson["k"], cellJson["value"]);
}
var time2 = Ext.Date.format(new Date(), "Y-m-d H:i:s"); //结束计时
theSpread.isPaintSuspended(false); //恢复重绘
|
|