2012-02-10 58 views
3

我想在不重新加载页面的情况下重置网格列(隐藏/显示),宽度和位置。 我正在试图extjs网格恢复列(隐藏/显示),宽度,位置

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

但它只适用于职位。

+0

文档,你怎么叫grid.getView()。刷新()? – 2012-02-10 10:05:24

+1

Ext.getCmp('inventoryResultGrid')。getView()。refresh();不为我工作:( – 2012-02-13 09:23:19

回答

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(); 
} 
+0

我正在使用ExtJS 4和网格没有'getColumnModel'方法 – CoderDennis 2013-10-08 20:05:27