2010-09-10 49 views
2

我正在學習ExtJS。我試圖用CRUD製作一張桌子。 這是我的代碼的一個例子。ExtJS.grid.CRUD

Ext.onReady(function(){ 

     var writer = new Ext.data.JsonWriter({ 
      encode: true, 
      writeAllFields: false 
     }); 

     var proxy = new Ext.data.HttpProxy({ 
     api: { 
      read : 'read', 
      create : 'сreate', 
      update: 'update', 
      destroy: 'delete' 
     } 
    }); 

var reader = new Ext.data.JsonReader({ 
root:'list', 
id:'id', 
totalProperty: 'totalCount'}, 
    [ 
    'id', 
    'name', 
    'description' 
]) 

    var store = new Ext.data.Store({ 
      id:'id', 
      proxy: proxy, 
      reader: reader, 
      writer: writer, 
      autoSave: true 
     }); 

store.load(); 

var title_edit = new Ext.form.TextField(); 

    var grid = new Ext.grid.EditorGridPanel({ 
     store: store, 
       renderTo: document.body, 
     clickstoEdit: 1, 
     columns: [ 
      {id:'id',header: 'ID', width: 30, dataIndex: 'id',editor: title_edit}, 
      {header: 'Name', width: 80, dataIndex: 'name',editor: title_edit}, 
      {header: 'Description', width: 180, dataIndex: 'description',editor: title_edit} 
         ], 
      height: 320, 
     width: 400, 
     title: 'Table', 
     loadMask: true, 
     bbar: new Ext.PagingToolbar({ 
      pageSize: 10, 
      store: store, 
      displayInfo: true, 
      displayMsg: 'Displaying movies {0} - {1} of {2}', 
      emptyMsg: "No movies found" 
     }), 
     tbar: 
     [ 
       { 
     text: 'Add', 
     handler: function(btn, ev) { 
     var u = new store.recordType({ 
      name: '', 
      description : '' 
     }); 

     grid.stopEditing(); 
     store.insert(0, u); 
     grid.startEditing(0, 1); 
    } 

    }  ] 
     }); 
}); 

它包含沒有錯誤 - 所以說FireBug。 當我點擊按鈕「添加」時,會發生以下情況: 對服務器的請求以空值發送, 在編輯模式下在表中添加新行。

但這是錯誤的...

我看了文檔中的例子:

http://dev.sencha.com/deploy/dev/examples/writer/writer.html

在這個例子中,向服務器發送一個請求的最後階段,首先添加表中的新行,然後我編輯它,然後才 - 請求到服務器。

我該如何在我的代碼中做同樣的事情?請幫忙。

回答

1

查看底層商店的autoCommit屬性。 IIRC,如果autoCommit爲false,那麼商店將不會與服務器交互,除非您明確地將其指向commit()。