улучшение для 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 моей компании.

Мое требование состоит в том, что я не надеялся, что пользователь сможет вручную повторно отобразить скрытый столбец, установив флажок, как показано ниже. введите здесь описание изображения

Как я могу реализовать это требование, из-за gwt-ext я думаю, что мне сложно изменить способ ext-js. Я надеюсь добавить функцию в класс GridPanel, чтобы разработчик мог вызывать ее, чтобы скрыть флажок.

Спасибо.


person liam xu    schedule 12.12.2012    source источник


Ответы (1)


Я могу добавить этот метод в свой собственный код и вызвать его перед созданием 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
                    }));
                }
            }
        }
            });
        }-*/;
person liam xu    schedule 13.12.2012