0

我在运行时在 Grid 中隐藏列时遇到了麻烦。

在一个项目中,我使用了一个函数来返回网格中列的配置。为了获取我在网格中的列列表,我使用了这段代码:

var cmV = cmpGrid.getView(); var cmH = cmV.getHeaderCt(); var cm = cmH.getGridColumns();

变量“cm”返回一个数组,其中包含网格中配置的列。

当我在带有 ExtJS 版本 3.4.1 的标题网格中手动隐藏带有“列”选项的列时,我可以获得该属性

hidden:true

对于配置的列。但是对于 ExtJS 6,配置的列不包含此属性。

我该如何解决这个问题?

在此先感谢洛伦佐。

**

更新

** 我发现了关于我之前的问题的这一点。和

var cm = cmH.getGridColumns();

我可以得到网格中列的数组。用 Firebug 分析这个数组,我发现子数组“config”包含配置列所需的属性。然而,现在这个数组并没有更多地反映列的更改配置,而是应用了默认配置。我的第一个问题是这种新行为是否是错误。因为我发现了这种新行为,所以我更改了代码以获取列的属性,而不是从子数组配置而是从基数。然而,现在可能的配置太多了。现在我的第二个问题是是否有一种方法可以减少或仅具有网格中列类型的主要属性。

4

1 回答 1

0

为什么不直接使用grid.columns[index].setHidden(true)

或者,如果您想获取列列表,那么重新配置列怎么样。

var tempColumns = [];

// "cm" returns an array with the configured columns in the grid
cm.forEach(function(e) {
    if (some conditions) {
        tempColumns.push({
            xtype: e.xtype,
            text: e.text,
            dataIndex: e.dataIndex,
            hidden: true,
            width: e.width,
            align: e.align,
            format: e.format
        });
    }
    else{
        tempColumns.push({
            xtype: e.xtype,
            text: e.text,
            dataIndex: e.dataIndex,
            hidden: e.hidden,
            width: e.width,
            align: e.align,
            format: e.format
        });
    }
});

grid.reconfigre(null, tempColumns);

https://fiddle.sencha.com/#fiddle/17lq

于 2016-03-24T12:39:00.410 回答