从网格行创建列表的最佳方法是什么?

时间:2016-06-06 17:53:37

标签: javascript extjs grid extjs5

在我的应用程序中有两个拖放网格。

要创建列表,请将行从第一个网格拖动到第二个网格。

为服务器发送此行列表(第二个网格)的最佳方法是什么,然后在另一个网格中显示?

我尝试同步和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 个答案:

答案 0 :(得分:1)

要在一个Ext.Ajax.request中将整个记录范围从商店发送到服务器,您可以尝试:

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

或者您可以在记录中包含一个特殊字段,其中包含记录是否在列表中。将非持久性布尔字段设置为defaultValue false,并将onDrop设置为true。而且,记录应该是脏的。