J'ai du code qui demande des données à une servlet, et les restitue dans un dojox.grid.DataGrid. Cela semble être plutôt lent cependant! Je suis coincé sur la façon de le rendre plus rapide. Quelqu'un peut-il aider?dojo.data.ItemFileWriteStore lent ....?
Je teste avec
Dojo 1,34 FF & Chrome. Mon code supprime tous les éléments dans le dojo.data.ItemFileWriteStore, puis en ajoute de nouveaux qui reviennent d'une requête JSON.
//Define globla var for the WriteStore...
var deltaInfo;
var rawdataDeltaInfo = <s:property value='%{deltaTableData}'/>;
deltaInfo = new dojo.data.ItemFileWriteStore({
data: {
items: rawdataDeltaInfo
}
});
Cette section de code pour supprimer toutes les données existng prennent deux secondes, même si elle a seulement 30 lignes. Des idées pour rendre cela plus rapide?
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);
}
La section du code ci-dessus pour ajouter 30 nouveaux éléments prend 4 secondes. Des idées sur la façon de le rendre plus rapide?
Merci!
Jeff Porter
CODE FINAL ...
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) {
}
Nous utilisons setStore pour cette raison. Cependant, nous avons eu quelques erreurs quand setStore est appelé en succession rapide. Par exemple, dans une combinaison arbre/grille semblable à un explorateur, nous devons limiter les changements lorsque l'on clique sur l'arbre. –
Merci pour l'info kschneid! J'ai ajouté mon code final à ma question ci-dessus. –