extjs网格恢复列(隐藏/显示),带,位置

时间:2012-02-10 07:46:48

标签: extjs grid

我想重置网格列(隐藏/显示),宽度,位置而不重新加载页面。 我正在尝试这个

Ext.getCmp('inventoryResultGrid').applyState(firstState);

但它只适用于职位。

2 个答案:

答案 0 :(得分:2)

尝试重新配置方法。

var grid = Ext.getCmp('inventoryResultGrid'); 
grid.reconfigure(grid.store, grid.initialConfig.columns);

您可以在http://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.Panel-method-reconfigure

找到文档

答案 1 :(得分:0)

哪个ExtJS版本?

从EXtJS 3.1.4中查看GridPanel.applyState()的来源:在列之后应用状态确实只将值存储在列模型的配置中,但不会更改当前设置(位置除外)。

这样的事情应该做(未经测试):

function restoreColumnState(grid, state) {
    var cm = grid.getColumnModel(),
        columns = state.columns,
        columnState,
        column,
        columnIndex;
    cm.suspendEvents(true);
    for (var i = 0, len = columns.length; i < len; i++) {
        columnState = columns[i];
        column = cm.getColumnById(columnState.id);
        if (column) {
            columnIndex = cm.getIndexById(columnState.id);
            cm.setHidden(i, columnState.hidden);
            cm.setColumnWidth(i, columnState.width);
            if (columnIndex != i) {
                cm.moveColumn(columnIndex, i);
            }
        }
    }
    cm.resumeEvents();
}