dojo dojo.data.ItemFileWriteStore慢....?

时间:2010-07-07 12:34:23

标签: javascript dojo

我有一些代码从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) {
 }

1 个答案:

答案 0 :(得分:1)

尝试跳过遍历现有商店的代码,删除所有商品,然后执行deltaInfo.save()。相反,请根据您的xhr调用创建一个全新的商店,然后使用dojox.grid.DataGrid.setStore()