2012-12-12 61 views
0

通常,我會創建像新GridPanel(xxx,480,200,1,5)一樣的默認GridPanel,並且我可以通過gridpanel的構造函數中的第一個參數來控制應該隱藏哪個列。gwt-ext的增強功能

例如,我創建了一個像下面這樣的網格面板,我想隱藏名爲的描述

public static xxx[] grdFundOutputs = { 
     new xxx("ID", "id", Integer.class, 50), 
     new xxx("Name", "name", String.class, 100), 
     new xxx("Description", "description", String.class, 150,true),//true represent hidden 
     new xxx("Amount", "amount", Float.class, 70), 
}; 
public static GridPanel createGrid(){ 
    return new GridPanel(grdFundOutputs, 480, 200, 1, 5); 
} 

:我用XXX來表示類名,因爲我不能把它暴露在公衆由於延長通過我公司的GWT-EXT。

我的要求是,我不希望用戶可以通過單擊複選框來重新顯示隱藏列,如下圖中的操作。 enter image description here

我如何能實現,因爲GWT-EXT的這個要求,我覺得這對我來說很難改變EXT-js.I的方式希望的功能添加到類的GridPanel,使開發者可以調用它讓隱藏的複選框。

謝謝。

回答

0

我可以將這個方法添加到我自己的代碼和GridPanel中的施工前調用它

private native void unableHiddenReShown()/*-{ 
     $wnd.Ext.override($wnd.Ext.grid.GridView, { 
         beforeColMenuShow : function(){ 
      var cm = this.cm, colCount = cm.getColumnCount(); 
      this.colMenu.removeAll(); 
      for(var i = 0; i < colCount; i++){ 
       if(cm.config[i].fixed !== true && cm.config[i].hideable !== false && !cm.isHidden(i) //!cm.isHidden(i) was added to solve this problem){ 
        this.colMenu.add(new $wnd.Ext.menu.CheckItem({ 
         id: "col-"+cm.getColumnId(i), 
         text: cm.getColumnHeader(i), 
         checked: !cm.isHidden(i), 
         hideOnClick:false, 
         disabled: cm.config[i].hideable === false 
        })); 
       } 
      } 
     } 
      }); 
     }-*/;