1

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

我正在寻找一种从网格中隐藏列的方法。我可以使用 setHidden 但随后用户可以从列标题的菜单中再次“取消隐藏”该列。似乎隐藏的属性只是没有削减它......

4

5 回答 5

1

行。最终我做到了:在网格的“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 事件执行相同的操作。

于 2012-11-15T13:12:28.510 回答
1

使用以下配置列

hidden: true, hideable: false

'grid.headerCt.getGridColumns()'

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

这将适用于 Ext js 4.1

于 2013-03-04T11:05:05.443 回答
0

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

于 2012-10-18T08:50:54.143 回答
0

为每个场景重新配置网格。链接到 api提示

于 2012-10-18T18:19:26.953 回答
0

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

于 2012-10-25T16:28:32.013 回答