ExtJs 4:使用使用ArrayStore的网格隐藏/显示网格列

ExtJs 4:使用使用ArrayStore的网格隐藏/显示网格列,extjs,Extjs,ExtJS4: 如何动态显示和隐藏使用ArrayStore作为其存储的网格的列? 我找到了这个解决办法 我知道每个列都需要setVisibletrue | false,但当我要求使用grid.columns时,我得到了一个对象数组,作为对象,它们没有setVisible函数。 如果我使用Ext.getCmp。。对于使用列id的每个特定列,我将返回一个列对象,并且能够访问SetVisible函数。。但是也可以从网格中获取这些列对象的数组吗?您可以在这里找到更多信息 可以使用显示和隐藏方法 gri

ExtJS4: 如何动态显示和隐藏使用ArrayStore作为其存储的网格的列? 我找到了这个解决办法 我知道每个列都需要setVisibletrue | false,但当我要求使用grid.columns时,我得到了一个对象数组,作为对象,它们没有setVisible函数。 如果我使用Ext.getCmp。。对于使用列id的每个特定列,我将返回一个列对象,并且能够访问SetVisible函数。。但是也可以从网格中获取这些列对象的数组吗?

您可以在这里找到更多信息

可以使用显示和隐藏方法

 grid.columns[index].show();
或者绝对可以使用setVisible方法

 grid.columns[index].setVisible(false);
中的解决方案应该适合您。您使用的ExtJS的确切版本是什么

使用grid.columns时,返回的对象数组是列对象。因此,链接答案中详细说明的以下代码应该有效

grid.columns[0].setVisible(false);

请查看此示例。

您应该这样做:

var myGrid = Ext.getCmp("Your_GRID");
var cols = myGrid.columns;
//index of the column to hide.
cols[index].setVisible(!cols[index].isVisible())
以下是我在小提琴中的工作示例:

这很奇怪,我就是这么做的,但Chrome说setVisible不是一个函数,开发人员工具将col显示为对象。不管怎样,你知道在隐藏/显示后是否可以调整网格的宽度,以适应显示的列数吗?这很奇怪,我制作的ext版本使用的是4.2.0,你使用的是旧版本吗。。。但我认为这一定是他们的旧版本了。我还更新了我的小提琴,这样当一列被隐藏时,这些列会自动调整小提琴的大小。这是通过以下方法实现的: