2012-02-10 97 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