2016-06-06 243 views
1

在我的應用程序中有兩個拖放網格。什麼是從網格行創建列表的最佳方式

要創建列表,請將行從第一個網格拖到第二個網格。

發送此列表(第二個網格)的服務器然後顯示在另一個網格中的最佳方式是什麼?

我試着同步和setDirty(true),但不推薦使用「Ext.data.Model#setDirty」。

var grid = this.lookupReference('gridRef'); 
    var store = grid.getStore(); 
    store.each(function(record){ 
     record.setDirty(true); 
    }); 

    store.sync(); 

我試過了,沒有成功:

var grid = this.lookupReference('gridRef'); 
    var store = grid.getStore(); 
    grid.getSelectionModel().selectAll(); 
    var selection = grid.getSelectionModel().getSelection(); 
    var values = []; 

    for(var i=0; i<selection.length; i++) { 
     values.push(selection[i].get('order')); 
     values.push(selection[i].get('item')); 
    } 

    var model = Ext.create('app.myModel', values); 
    console.log(model) //show just one item 
    ???? 

編輯:

var grid = this.lookupReference('gridRef'); 
    var store = grid.getStore();   

    var records = store.getRange(); 

    var create = 'create'; //PHP CRUD » case create 

    Ext.Ajax.request({ 
     url: 'php/crudActionList.php?create', 
     method: 'POST', 
     params : create, 
     jsonData: records, 
     // jsonData: Ext.encode(records), 
     // jsonData: Ext.JSON.encode(records), 
     success: function(conn, response, options, eOpts) { 
       console.log('Success!'); 
     }, 
     failure: function(conn, response, options, eOpts) { 
      console.log('failure') 
     } 
    }); 

回答

1

要發送的從商店到服務器記錄的整個範圍單一Ext.Ajax.request,你可以嘗試:

Ext.Ajax.request({ 
    url:'testURL', 
    jsonData:store.getRange() 
}); 

或者您可以在記錄中包含特殊字段,其中包含記錄是否在列表中。將非持久布爾字段設置爲defaultValue false,並將onDrop設置爲true。瞧,唱片應該很髒。

+0

謝謝亞歷山大。 getRange()運作良好。 但是我收到以下錯誤:未捕獲RangeError:超出最大調用堆棧大小。 我用我的代碼編輯了我的問題。 – josei

+0

對不起,忘了你必須從記錄中提取數據。一條記錄包含一個鏈接到商店,其中包含一個鏈接到記錄...如果它被序列化爲一棵簡單的樹,它將是無止境的。嘗試'store.getRange()。map(function(record){return record.getData()})'。 – Alexander

+0

再次感謝亞歷山大。 – josei

相關問題