2010-12-10 4 views
1

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;

+0

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

+0

store.getModifiedRecords() est ok. Je peux voir la liste des objets modifiés (lignes) dans la console. – Shamanu4

Répondre

Questions connexes