2011-03-21 211 views
1

可能重複:
how to show/ hide column in a grid panelExtJS的顯示/隱藏欄動態

在一個Ext JS的網格,我有隱藏的要求/示出基於列的一些COND =真/假。

我可以動態設置列的'hidden'屬性嗎?

+0

難道這列/網後已經構成?或者您是否知道在創建列定義時是否要顯示它? – Jonas 2011-03-21 03:19:32

+0

構建網格後,當商店加載時,商店將包含一個類似於此imho的隱藏/顯示標誌 – Victor 2011-03-21 04:41:16

+0

:http://stackoverflow.com/questions/6042138/extjs4-what-is-the-equivalent-to-the -grid-columnmodel – 2012-06-06 14:28:25

回答

7

可以使用beforerender事件隱藏的列。在調用渲染函數顯示網格之前調用該事件。事件函數採用一個參數,它是網格本身。從這個網格對象中,您可以獲取網格的列模型並調用setHidden方法來隱藏適當的列。從網格對象中,您還可以將商店附加到網格上進行檢查。

下面是代碼怎麼會:

listeners: { 
    'beforerender' : function(grid) { 

     store = grid.getStore(); 
     if(your-condition) { 
      cm = grid.getColumnModel(); 
      cm.setHidden(0,true); 
     } 

    } 
} 
+0

我喜歡你要去的地方,但如果它是一個更圓整的方法就好了:當用戶隱藏一個列,捕獲事件,在localStorage中存儲隱藏某個列的標誌。任何網格加載腳本都會根據localStorage內部的內容設置列的可見性。 – IEnumerator 2011-10-19 19:42:42

+0

你可以輕鬆地擴展上述方法來做到這一點! – 2011-10-19 20:08:04

+0

我最終意識到extjs有一位國家經理。打開它,並砰!我用戶可配置的網格。 – IEnumerator 2011-10-20 21:46:17

4

您可以檢查並在存儲加載隱藏:

store.load({ 
    callback: function(){ 
     // access raw json data and check some columns to hide or not 
     if(store.getProxy().getReader().rawData.myColumn.hide) { 
      grid.columns[1].setVisible(false); 
     } 
     if(store.getProxy().getReader().rawData.myAnotherColumn.hide) { 
      grid.columns[4].setVisible(false); 
     } 
    } 
});