J'ai créé un composant grille avec la configuration du magasin comme celui-ci:Extjs Restful Store, Envoi de la demande par lots?
//Create the store
config.store = new Ext.data.Store({
restful: true,
autoSave: false,
batch: true,
writer: new Ext.data.JsonWriter({
encode: false
}),
reader: new Ext.data.JsonReader({
totalProperty: 'total',
root: 'data',
fields: cfg.fields
}),
proxy: new Ext.data.HttpProxy({
url:cfg.rest,
listeners:{
exception: {
fn: function(proxy, type, action, options, response, arg) {
this.fireEvent('exception', proxy, type, action, options, response, arg);
},
scope: this
}
}
}),
remoteSort: true,
successProperty: 'success',
baseParams: {
start: 0,
limit: cfg.pageSize || 15
},
autoLoad: true,
listeners: {
load: {
fn: function() {
this.el.unmask();
},
scope: this
},
beforeload: {
fn: function() {
this.el.mask("Working");
},
scope: this
},
save: {
fn: function(store, batch, data) {
this.el.unmask();
this.fireEvent('save', store, batch, data);
},
scope: this
},
beforewrite: {
fn: function(){
this.el.mask("Working...");
},
scope: this
}
}
});
Note: Ignorer les fireEvents. Ce magasin est en cours de configuration dans un composant de grille personnalisé partagé.
Cependant, j'ai un problème ici: Quelles que soient les actions de CRUD que j'ai faites, je sors toujours avec N demandes au serveur qui est égal à N lignes que j'ai sélectionnées. c'est-à-dire que si je sélectionne 10 lignes et que je clique sur Supprimer, 10 requêtes SUPPRIMER seront effectuées sur le serveur.
Par exemple, voici comment supprimer des enregistrements:
/**
* Call this to delete selected items. No confirmation needed
*/
_deleteSelectedItems: function() {
var selections = this.getSelectionModel().getSelections();
if (selections.length > 0) {
this.store.remove(selections);
}
this.store.save();
this.store.reload();
},
Note: La portée de « ce » est un composant Grille.
Alors, est-ce supposé être comme ça? Ou mon problème de configuration? J'utilise Extjs 3.3.1, et selon la documentation de batch
sous Ext.data.Store,
Si Store est RESTful, le DataProxy est également RESTful, et une transaction unique est généré pour chaque enregistrement .
Je souhaite que ce soit mon problème de configuration.
Note: J'ai essayé avec listful
, encode
, writeAllFields
, encodeDelete
dans Ext.data.JsonWriter
... sans espoir
Hey wes, merci beaucoup pour votre réponse. Je pensais que c'est l'une des erreurs de configuration que j'ai commises qui soulève ce problème, au moins vous l'avez confirmé avec moi. –
Je me demande si cela reste vrai dans ExtJS 4.1.3? – justinzane
@justinzane - Je ne sais pas sur ExtJS 4. Cette question concerne spécifiquement ExtJS 3. Il vaut sans doute sa propre question de poser des questions sur les demandes par lots reposant v4. – wes