Перемещение строк в Grid таблице ExtJs
Всем привет. Интересует такая штука как перемещение строк в Grid таблице modExtra и сохранение результата. В древе ресурсов такое есть, а что по поводу modExtra? Возможно ли такое организовать?
Комментарии: 5
В MIGX такое реализовано в TV, но как я понимаю там он создаёт JSON.
github.com/modxcms/Collections/blob/master/assets/components/collections/js/mgr/widgets/category/collections.grid.resources.js
В этом компоненте есть.
Сам не реализовывал, надеюсь вы разберетесь :)
В этом компоненте есть.
Сам не реализовывал, надеюсь вы разберетесь :)
modExtra.grid.Items = function (config) {
config = config || {};
Ext.applyIf(config, {
.....
remoteSort: true,
enableDragDrop: true,
ddGroup: 'modextra-grid-dd',
ddAction: 'mgr/item/sort',
....
});
modExtra.grid.Items.superclass.constructor.call(this, config);
......
if (config.enableDragDrop && config.ddAction) {
this.on('render', function(grid) {
grid._initDD(config);
});
}
};
Ext.extend(modExtra.grid.Items, MODx.grid.Grid, {
.......
_initDD: function (config) {
var grid = this;
var el = grid.getEl();
new Ext.dd.DropTarget(el, {
ddGroup: grid.ddGroup,
notifyDrop: function (dd, e, data) {
var store = grid.getStore();
var target = store.getAt(dd.getDragData(e).rowIndex).id;
var sources = [];
if (data.selections.length < 1 || data.selections[0].id == target) {
return false;
}
for (var i in data.selections) {
if (!data.selections.hasOwnProperty(i)) {
continue;
}
var row = data.selections[i];
sources.push(row.id);
}
el.mask(_('loading'), 'x-mask-loading');
MODx.Ajax.request({
url: config.url,
params: {
action: config.ddAction,
sources: Ext.util.JSON.encode(sources),
target: target,
},
listeners: {
success: {
fn: function () {
el.unmask();
grid.refresh();
if (typeof(grid.reloadTree) == 'function') {
sources.push(target);
grid.reloadTree(sources);
}
}, scope: grid
},
failure: {
fn: function () {
el.unmask();
}, scope: grid
},
}
});
},
});
}
});
Ext.reg('modextra-grid-items', modExtra.grid.Items);
Оставил только то, что drag&drop касается. На месте точек другой код, не относящийся к сортировке. Собственно на процессор mgr/item/sort отправляются данные строк какие перемещаем. И в процессоре уже надо будет производить работу по сортировке. Тут уже много разных алгоритмов может быть.
А где бы сам процессор sort.class.php подсмотреть?)
Советую изучить исходники минишопа.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.