我想重置网格列(隐藏/显示),宽度,位置而不重新加载页面。 我正在尝试这个
Ext.getCmp('inventoryResultGrid').applyState(firstState);
但它只适用于职位。
答案 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();
}