0

通常、新しい GridPanel(xxx, 480, 200, 1, 5) のようなデフォルトの GridPanel を作成し、gridpanel のコンストラクターの最初のパラメーターを使用して非表示にする列を制御できます。

たとえば、以下のような gridpanel を作成し、 description という列を非表示にしたいとします

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);
}

:社内でのgwt-extの拡張により公開できないため、クラス名をxxxで示しました。

私の要件は、画像の次のアクションのようにチェックボックスをクリックして、ユーザーが非表示の列を手動で再表示できるようにしたくないということです。 ここに画像の説明を入力

gwt-ext のため、この要件をどのように実装できますか ext-js の方法を変更するのは難しいと思います.クラス GridPanel に関数を追加して、開発者がそれを呼び出してチェックボックスを非表示にできるようにしたいと考えています.

ありがとう。

4

1 に答える 1

0

このメソッドを自分のコードに追加して、グリッドパネルの構築前に呼び出すことができます

 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
                    }));
                }
            }
        }
            });
        }-*/;
于 2012-12-13T05:59:55.937 に答える