. Grid.getView () getSelectionModel () GetSelection (). не работает - PullRequest
1 голос
/ 09 апреля 2020

Я работаю с ExtJS6.2 У меня есть простая панель Ext.grid.Panel с

this.selModel = Ext.create('Ext.selection.CheckboxModel', {
        checkOnly: true,
        injectCheckbox: 1
    });

Мне нужны данные из сетки в той же последовательности, что и данные, отображаемые в сетке.

Если я выберу все элементы сетки, это нормально работает.

selection = grid.getView().getSelectionModel().getSelection();

Затем я отменяю выбор одного элемента в сетке - установите флажок

Затем порядок выбора перепутал? Как я могу получить правильный заказ снова?

Заранее спасибо

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете добиться этого поведения, используя следующее переопределение:

Ext.define('Ext.selection.ModelOverride', {
    override: 'Ext.selection.Model',
    syncSortSelectedWithStore: false,
    getSelection: function () {
        if (this.syncSortSelectedWithStore && this.view && !Ext.isEmpty(this.view.getStore())) {
            var map = this.view.getStore().getRange().reduce((acc, cur, i) => {
                acc[cur.id] = i;
                return acc;
            }, {})
            this.selected.sort(function (a, b) {
                return map[a.id] - map[b.id];
            })
        }
        return this.callParent(arguments);

    }
});

Также в моей скрипке вы можете посмотреть пример, а в консоли я описал, как все это работает подробно

...