增强gwt-ext

时间:2012-12-12 07:31:57

标签: javascript gwt extjs gwt-ext

通常,我创建默认的GridPanel,如新的GridPanel(xxx,480,200,1,5),我可以控制哪个列应该通过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);
}

注意:我使用xxx来表示类名,因为由于我公司对gwt-ext的扩展,我无法向公众公开。

我的要求是我不希望用户可以通过单击图像中的以下操作之类的复选框来手动重新显示隐藏列。 enter image description here

我如何实现这个要求,因为gwt-ext,我认为我很难改变ext-j的方式。我希望在GridPanel类中添加一个函数,以便开发人员可以调用它来让它隐藏了复选框。

感谢。

1 个答案:

答案 0 :(得分: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
                    }));
                }
            }
        }
            });
        }-*/;