我有一些代码从servlet请求一些数据,并在dojox.grid.DataGrid中呈现它。这似乎相当缓慢!我坚持如何让它更快。任何人都可以帮忙吗?
我正在测试
道场1.34 FF&铬。
我的代码删除了dojo.data.ItemFileWriteStore中的所有项目,然后添加了从JSON请求返回的新项目。
//Define globla var for the WriteStore...
var deltaInfo;
var rawdataDeltaInfo = <s:property value='%{deltaTableData}'/>;
deltaInfo = new dojo.data.ItemFileWriteStore({
data: {
items: rawdataDeltaInfo
}
});
这段代码删除所有存在的数据需要2秒,即使它只有30行。任何想法如何使这更快?
function requestJSONFeed(){
// remove all existing data...
var allData = deltaInfo._arrayOfAllItems;
for (i=0;i<allData.length;i++) {
if (allData[i] != null) {
deltaInfo.deleteItem(allData[i]);
}
}
deltaInfo.save();
// make JSON XHR request...
var xhrArgs = {
url: "../secure/jsonServlet",
handleAs: "json",
preventCache: true,
load: function(data) {
// Add new items to the store...
for (i=0;i<data.length;i++) {
deltaInfo.newItem(data[i]);
}
},
error: function(error) {
}
}
//Call the asynchronous xhrGet
var deferred = dojo.xhrGet(xhrArgs);
}
上面添加30个新项目的代码段需要4秒。关于如何加快速度的任何想法?
谢谢!
杰夫波特
最终法典......
var xhrArgs = {
url: "../secure/jsonServlet",
handleAs: "json",
preventCache: true,
load: function(datax) {
deltaInfo = new dojo.data.ItemFileWriteStore({data: {items:datax}});
var grid = dijit.byId("gridDeltas");
grid.setStore(deltaInfo);
},
error: function(error) {
}
答案 0 :(得分:1)
尝试跳过遍历现有商店的代码,删除所有商品,然后执行deltaInfo.save()
。相反,请根据您的xhr调用创建一个全新的商店,然后使用dojox.grid.DataGrid.setStore()
。