extjs动态显示/隐藏列

Vic*_*tor 1 extjs

可能重复:
如何在网格面板中显示/隐藏列

在ext js网格中,我需要基于某些cond = true/false来隐藏/显示列.

我可以动态设置列的"隐藏"属性吗?

Abd*_*oof 8

您可以使用该beforerender事件隐藏列.在调用render函数以显示网格之前调用该事件.事件函数采用一个param,它就是网格本身.从此网格对象中,您可以获取网格的列模型,并调用setHidden方法以隐藏相应的列.从网格对象中,您还可以获取附加到网格的商店以供检查.

以下是代码的方式:

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

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

    }
}
Run Code Online (Sandbox Code Playgroud)


dig*_*666 5

您可以在商店加载时检查和隐藏:

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);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)