我正在使用 Extjs 4.1 网格面板。
我正在寻找一种从网格中隐藏列的方法。我可以使用 setHidden 但随后用户可以从列标题的菜单中再次“取消隐藏”该列。似乎隐藏的属性只是没有削减它......
行。最终我做到了:在网格的“afterrender”事件中:
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 then checkbox.Show() else checkbox.Hide();
(对于伪代码,我很抱歉,我使用的是一个 C# 到 javascript 转换器的 Sharpkit,所以如果我复制粘贴代码,就很难解释了。
注意:您可以对网格的 enableColumnHide 事件执行相同的操作。
使用以下配置列
hidden: true,
hideable: false
'grid.headerCt.getGridColumns()'
使用上述方法获取所有网格列并使用 hide() 和 show() 显示特定列
这将适用于 Ext js 4.1您可以在 initComponent 方法中配置 columns 属性,并仅将必要的列插入 this.columns 数组
为每个场景重新配置网格。链接到 api提示
我在列上使用 setVisible(false | true)。 文档