2016-06-06 3 views
1

В моем приложении есть две сетки перетаскивания.Каков наилучший способ создать список из строк сетки?

Чтобы создать список, перетащите строки с первой на вторую сетку.

Каков наилучший способ отправить этот список строк (вторая сетка) для сервера, чтобы он отображался в другой сетке?

Я пытался синхронизировать и устанавливатьDirty (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() 
}); 

Или вы можете иметь специальное поле в своей записи, которое содержит, находится ли запись в списке. Установите непостоянное логическое поле по умолчанию. false и onDrop установите значение true. И воля, запись должна быть грязной.

+0

Спасибо, Александр. getRange() работает хорошо. Однако я получаю следующее сообщение об ошибке: Uncaught RangeError: превышен максимальный размер стека вызовов. Я редактировал свой вопрос с помощью своего кода. – josei

+0

Извините, забыли, что вам нужно извлечь данные из записей. Запись содержит ссылку на хранилище, содержащую ссылку на запись ... если она сериализована как простое дерево, она будет бесконечной. Попробуйте 'store.getRange(). Map (function (record) {return record.getData()})'. – Alexander

+0

Еще раз спасибо Александр. – josei

Смежные вопросы