Перемещение строк вверх и вниз в EditorGridPanel
Знает ли кто-нибудь о рабочем примере перемещения строк в EditorGridPanel (или знает, почему он не работает для меня)? Я нашел несколько примеров, и те, которые я нашел, используют этот подход:
// calculate the new index, then remove the record from the store, and re-insert it at the new index
grid.getStore().remove(record);
grid.getStore().insert(index, record);
В моем случае это не удается. Он хорошо смотрится в сетке, но 2 DELETE http-запроса на самом деле отправляются на сервер, а не ставятся. Это становится очевидным, когда я перезагружаю страницу-перемещенная строка фактически была удалена.
Он является основной конфигурацией моего магазина:
var remoteJsonStore = new Ext.data.JsonStore({
storeId: 'colStore',
autoDestroy: false,
autoSave: true,
proxy: new Ext.data.HttpProxy({url:'/exercises/collect/data_rows'}),
restful: true,
format: 'json',
disableCaching: false,
autoLoad: true,
writer: new Ext.data.JsonWriter({
encode: false
}),
root: 'data',
idProperty: 'data_row_id',
fields: recordFields,
baseParams:{section_id:GridUtils.properties[gridId]['section_id']},
listeners:{
exception:function(misc){
// stuff....
},
beforewrite:function(store, action, rs, options, arg){
this.baseParams["position"]=rs.rowIndex;
},
beforesave:function(store, data){
// stuff.... }
}
}
});
1 ответ:
У меня была аналогичная проблема при реализации представления переупорядочения DnD. Проблема в том, что хранилище помечает каждую запись remove () d для удаления, даже если вы повторно вставляете ее.
Чтение источника Ext.данные.Метод remove () магазина, я нашел решение:
remove: function(records, /* private */ isMove) {
Видите? Мы можем передать второй логический аргумент, чтобы сообщить магазину, что мы просто перемещаем запись! Но будучи помечены как частные и не документированные, мы должны быть осторожны при обновлении до новой версии фреймворка.
Итак окончательное решение таково:
grid.getStore().remove(record, true); // just moving grid.getStore().insert(index, record);
версия ExtJS: 4.1