排序有时在网格面板中不起作用,但大多数情况下都是如此

时间:2012-01-25 18:36:22

标签: extjs

EXT版本3.3.0

我有一个带可排序列的网格面板。它适用于90%的用户。但对于某些用户,第一列(这是一个整数)呈现为不可排序。即使单击列上方的弹出菜单,“升序排序”和“降序排序”也会显示为灰色。我无法复制此错误,但我已在其他用户工作站上看到它。以下是更多细节:

  1. ColoumnModel使用RowNumberer
  2. 所有列都可以排序。
  3. 网格面板使用viewConfig w /“forceFit”设置为false,“autoFill”设置为true。
  4. 我在这个网络上没有源代码,我想把它粘贴进去。

    谢谢!

1 个答案:

答案 0 :(得分:1)

我记得我前段时间遇到了类似的问题,而且这笔交易是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中恢复固定属性。

相关问题