j'ai un problème avec l'enregistrement des données de Ext.data.DirectStore au serveurExtJS. Ext.data.DirectStore envoyer des données nulles au serveur après la grille est mise à jour
Voici mon code:
new Ext.data.DirectStore({
api: {
read: AbonApi.cities,
create: AbonApi.cities_create,
update: AbonApi.cities_update,
destroy: AbonApi.cities_destroy
},
paramsAsHash: false,
autoSave: false,
storeId: 'cities-store',
reader: new Ext.data.JsonReader({
root: 'data',
idProperty: 'id',
fields: [
'id',
'name',
'label',
'comment',
]
}),
writer: new Ext.data.JsonWriter({
encode: true,
writeAllFields: true,
listful: true
})
});
Ext.ux.CityGrid = Ext.extend(Ext.grid.EditorGridPanel,{
initComponent: function(){
var config = {
frame:true,
title: 'Cities',
height:200,
width:500,
store: 'cities-store',
closable: true,
tbar: [{
text: 'Apply',
handler: function() {
this.store.save()
},
scope: this
}],
columns: [
{header: "Id", dataIndex: 'id', editor: new Ext.form.TextField()},
{header: "Name", dataIndex: 'name', editor: new Ext.form.TextField()},
{header: "Label", dataIndex: 'label', editor: new Ext.form.TextField()},
{header: "Comment", dataIndex: 'comment', editor: new Ext.form.TextField()},
],
onRender:function() {
Ext.ux.CityGrid.superclass.onRender.apply(this, arguments);
this.store.load();
}
}
Ext.apply(this, Ext.apply(this.initialConfig, config));
Ext.ux.CityGrid.superclass.initComponent.apply(this, arguments);
}
});
Après avoir modifié le grille appuyant sur le bouton Apply
je peux voir dans firebug ces données POST:
{"action":"AbonApi","method":"cities_update","data":null,"type":"rpc","tid":7}
Pourquoi data
est nulle et où est mes changements à la grille? Je fais quelque chose de mal ou c'est un bug
MISE À JOUR:
Ext.ux.CityGrid
... cutted out ...
tbar: [{
text: 'Apply',
handler: function() {
modified = this.store.getModifiedRecords();
console.log(modified)
this.store.save()
},
scope: this
}],
... cutted out ...
Je peux voir les données modifiées dans la console avant magasin est enregistré. et ces données ne passent pas au serveur;
Je suppose que ce n'est pas enregistrer les changements pour une raison quelconque. Ajouter un écouteur à l'événement 'save', voir ce que' store.getModifiedRecords() 'vous donne après l'édition? – wombleton
store.getModifiedRecords() est ok. Je peux voir la liste des objets modifiés (lignes) dans la console. – Shamanu4