2013-05-27 70 views
0

我有這樣一個簡單的問題,但無法找到答案(文檔)。我創建了Grid,其中信息從MySQL數據庫中檢索。使用Ext JS 4.2。 讓我們來看看腳本...動態編輯數據(網格json Ext JS 4)

Ext.define("AppStore",{ 
    extend: "Ext.data.Model", 
    fields: [ 
     {name: "nickname" , type: "auto"}, 
     {name: "email" , type: "auto"} 
    ] 
}); 

var store = Ext.create("Ext.data.Store",{ 
    model: "AppStore", 
    proxy: { 
     type: "ajax", 
     api: { 
      read : "./read.php", 
      update : "./update.php" 
     }, 
     reader: { 
      type: "json", 
      root: "" 
     }, 
     writer: { 
      type: "json", 
      writeAllFields: true, 
      encode: false, 
      root: "" 
     } 
    }, 
    listeners: { 
     read: function(operation, callback, scope){ 

     }, 
     update: function(operation, callback, scope){ 
      // Do I have to do something from here ? 
     } 
    }, 
    autoLoad: true 
}); 

Ext.create("Ext.grid.Panel",{ 
    store: store, 
    selMode: "cellmodel", 
    columns: [ 
     { 
      text: "Nickname", 
      flex: 1, 
      dataIndex: "nickname", 
      editor: { 
       xtype: "textfield", 
       allowBlank: false 
      } 
     }, 
     { 
      text: "Email", 
      flex: 1.5, 
      dataIndex: "email", 
      editor: { 
       xtype: "textfield", 
       allowBlank: false 
      } 
     } 
    ], 
    plugins: [ 
     Ext.create("Ext.grid.plugin.CellEditing",{ 
      clicksToEdit: 2 
     }) 
    ] 
}); 

一切正常,只是興趣我怎麼也得送請求MySQL的在網格小區改變之後更新數據。任何例子,文件或如何完成這項任務的方式將不勝感激,謝謝...

回答

1

通常,你會想要在你的網格商店打電話sync()爲了堅持模型的變化到服務器。這可以配置爲在每次編輯時自動發生(請參閱商店的autoSync property)。不過,我建議最好是根據某些特定操作(例如,單擊「保存」按鈕等)來處理sync()調用。

+0

所以'sync()'請求會發送到這裏'update:「./update.php」'是嗎?如果在這種情況下是什麼將傳遞參數名稱來處理它在PHP端? – tnanoba

+0

是的,這是正確的。當您在商店中調用sync()時,它會將所有待處理的創建/更新/刪除請求一起進行批處理。根據您的代理的配置,您的代理將動態地爲請求構建正確的URL。關於參數,它將發送模型中標記爲持久性(默認值爲true)和任何已更改(取決於writeAllFields配置)的任何字段。 – existdissolve