2013-05-14 33 views
-1

我在ExtJS中有一個可編輯的網格。我從json文件獲取數據,並試圖在編輯後將其保存回來。編輯完成後,我點擊保存並調用Store.sync(),但它不會更改JSON文件,並且網格會刷新回到編輯前的狀態。我是ExtJS的新手。我在這裏錯過了什麼,如何使它工作?如何在ExtJS中將可編輯網格中的數據保存在json文件中並使用更改來刷新網格?

Ext.define('User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
      {name: 'Pricelist', type: 'string'}, 
      {name: 'Productfamily', type:'string'}, 
      {name: 'Producttype', type:'string'}, 
      {name: 'Productsubgroup', type: 'string'}, 
      {name: 'Item', type: 'string'}, 
      {name: 'Level', type: 'string'}, 
      {name: 'Factor', type:'string'}, 
      {name: 'Factorvalue', type: 'string'}, 
      {name: 'Effstrtdate', type: 'string'}, 
      {name: 'Effenddate', type: 'string'}, 
      {name: 'Comments', type: 'string'}    
     ] 
    }); 

    var userStore = Ext.create('Ext.data.JsonStore', { 
    model: 'User', 
    proxy: { 
     type: 'ajax', 
     url: '/pwbench/form/products/fctrmgmt/data.json', 
     api: { 
     read: '/pwbench/form/products/fctrmgmt/data.json', 
      update: '/pwbench/form/products/fctrmgmt/data.json' 
     }, 
     reader: { 
      type: 'json', 
     } 
    }, 
    autoLoad: true 

    }); 

    var grid = Ext.create('Ext.grid.Panel', { 
    renderTo: Ext.getBody(), 
    store: userStore, 
    title: 'Application Users', 
    selType: 'cellmodel', 
    plugins: [ 
     Ext.create('Ext.grid.plugin.CellEditing', { 
     clicksToEdit: 1 
     }) 
    ], 
    columns: [....  
    ], 
    tbar: [ 
     { 
      text: 'Save', 
      handler: function() { 
       userStore.sync(); 
       userStore.load(); 

      } 
     } 
    ], 
    }); 

    Ext.application({ 
    requires: ['Ext.container.Viewport'], 
     name: 'ExtGrid', 
     launch: function() { 
      Ext.create('Ext.container.Viewport', { 
      items: grid, 
      width: 800, 
      height: 600 
     }); 

    } 
    }); 
+0

在網格中進行更改後,我可以使用getUpdatedRecords獲取更新的記錄,但是如何保存它們? – 2013-05-14 08:50:32

+0

在代理配置中安裝編寫器。請參閱[官方示例](http://docs.sencha.com/extjs/4.2.0/extjs-build/examples/writer/writer.html) – 2013-05-14 09:20:05

+0

我是否僅在代理配置中包含以下內容? 作家{ 類型:'json' } 我加了這個,但是沒有工作。我還需要添加什麼? – 2013-05-14 09:26:25

回答

0

你不能只是在沒有任何其他交互的情況下「更新json」。想象一下,如果有任何http請求只能更新服務器上的文件,那麼這個安全漏洞有多大。

您需要一些服務器端技術,PHP/Java/.NET/other來接收響應並將其寫入文件。在Ext SDK下載中有很多這樣的例子。

+0

謝謝!讓我檢查一下。 – 2013-05-14 09:32:41

相關問題