我正在使用Extjs 4.1网格面板。
我正在寻找一种从网格中隐藏列的方法。 我可以使用setHidden,但用户可以从列标题的菜单中再次“取消隐藏”该列。 看起来这个可隐藏的人物并没有削减它......
答案 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