Extjs Grid面板 - 使用hideable = false隐藏列

时间:2012-10-18 08:38:50

标签: extjs extjs4 extjs4.1

我正在使用Extjs 4.1网格面板。

我正在寻找一种从网格中隐藏列的方法。 我可以使用setHidden,但用户可以从列标题的菜单中再次“取消隐藏”该列。 看起来这个可隐藏的人物并没有削减它......

5 个答案:

答案 0 :(得分:1)

确定。 最终我这样做了: 在网格的“后现代”事件中:

var header = pnl.down("headercontainer");
if(header != null && header["getMenu"] != null)
{
   var menu=header.getMenu();
   menu.on('beforeshow',function(sender,eOpts){

            var menu=sender;
            if(!menu.items.containsKey("columnItem"))
            {
                return;
            }

            var columnsSubMenuItem=menu.items.getByKey("columnItem");
            var columnsCheckboxes=columnsSubMenuItem.menu.items["items"];

            // More code here...
            // See the pseudo code
   });
}

现在我只是通过列循环,如果checkbox.text == column.get_Title()&& column.get_Hideable()== true然后checkbox.Show()else checkbox.Hide();

(对于伪代码,我使用的是一个C#到javascript转换器的Sharpkit,所以如果我复制粘贴代码,那就更难解释了。

注意:您可以对网格的enableColumnHide事件执行相同的操作。

答案 1 :(得分:1)

使用以下配置到列

hidden: true, hideable: false

'grid.headerCt.getGridColumns()'

使用上面的方法获取所有网格列并使用hide()和show()来显示特定列

这适用于Ext js 4.1

答案 2 :(得分:0)

您可以在initComponent方法中配置columns属性,并仅将必要的列插入this.columns数组

答案 3 :(得分:0)

为每个方案重新配置网格。 Link to api提示

答案 4 :(得分:0)

我在列上使用setVisible(false | true)。 doc