Сортировка иногда не работает в Grid Panel, но в большинстве случаев - PullRequest
2 голосов
/ 25 января 2012

EXT версия 3.3.0

У меня есть сетка с сортируемыми столбцами. Работает с 90% пользователей. Но у некоторых пользователей первый столбец (который является целым числом) отображается как не сортируемый. Даже если щелкнуть всплывающее меню над столбцом, «Сортировка по возрастанию» и «Сортировка по убыванию» отображаются серым цветом. Я не могу воспроизвести эту ошибку, но я видел ее на других рабочих станциях пользователей. Вот более подробная информация:

  1. ColoumnModel использует RowNumberer
  2. Все столбцы можно сортировать.
  3. Панель сетки использует viewConfig w / forceFit, установленный в false, и autoFill, установленный в true.

У меня нет исходного кода в этой сети, o / w, я просто вставил бы его.

Спасибо!

1 Ответ

1 голос
/ 26 января 2012

Я помню, у меня была похожая проблема некоторое время назад, и дело было в том, что сетка ExtJs неправильно восстанавливает свое состояние из файлов cookie.После некоторой отладки я добавил следующий патч:

Ext.override(Ext.grid.GridPanel, {
applyState: function (state) {
    var cm = this.colModel,
        cs = state.columns,
        store = this.store,
        s,
        c,
        colIndex;

    if (cs) {
        for (var i = 0, len = cs.length; i < len; i++) {
            s = cs[i];
            c = cm.getColumnById(s.id);
            if (c) {
                colIndex = cm.getIndexById(s.id);
                cm.setState(colIndex, {
                    hidden: s.hidden,
                    width: s.width,
                    sortable: s.sortable,
                    fixed: cm.columns[colIndex].fixed
                });
                if (colIndex != i) {
                    cm.moveColumn(colIndex, i);
                }
            }
        }
    }
    if (store) {
        s = (state.sort instanceof Array) ? state.sort[0] : state.sort;
        if (s) {
            store[store.remoteSort && store.groupBy ? 'setDefaultSort' : 'sort'](s.field, s.direction);
        }
        s = state.group;
        if (store.groupBy) {
            if (s) {
                store.groupBy(s);
            }
            else {
                store.clearGrouping();
            }
        }

    }
    var o = Ext.apply({}, state);
    delete o.columns;
    delete o.sort;
    Ext.grid.GridPanel.superclass.applyState.call(this, o);
}

});

Единственное, что он делает, это восстанавливает фиксированное свойство из файлов cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...