grid.getColumnmanager().getColumns() 未在 Ext JS 网格中提供父列

grid.getColumnmanager().getColumns() is not giving parent column in Ext JS grid

我有包含分组列的网格。

我的部分代码如下:

Ext.require([
'Ext.grid.*',
'Ext.ux.grid.FiltersFeature',
'Ext.ux.LiveSearchGridPanel'
...
]);

var filters = {
    ftype: 'filters',
    encode: false,
    local: true  
};

var grid = new Ext.create('Ext.ux.LiveSearchGridPanel', {
    selType: 'cellmodel',
    store: store,
    columns:[
    {
        header: "Column1"
        dataIndex: 'Column1'
    },{
        header: "Column2",
        columns : [{
            header: "innerColumn1",
            dataIndex: 'innerColumn1'
        },{
            header: "innerColumn2"
            dataIndex: 'innerColumn2'
    }]
    },{
        header: "Column3",
        dataIndex: 'Column3'
    }],
    features: [filters]
 ...

现在,如果我使用 grid.columnManager.getColumns() 它 returns 以下列:

Column1
innerColumn1
innerColumn2 
Column3

它不返回 Column2,它是 innerColumn1innerColumn2 的 parentColumn/groupColumn。我应该使用哪种 Ext Js 方法在 columnList 中获取 Column2?我正在使用 Ext Js 4.2。任何帮助将不胜感激。

获取所有列的解决方案之一是使用 Ext ComponentQuery。我创建了这个 fiddle。查看 运行 this fiddle.

之后的开发者控制台

获取所有列的最简单查询是:

grid.query('gridcolumn:not([hidden])')// Open fiddle for full example

它只会 return 所有可见的列。您可以根据您的要求更改查询。

例如,要仅获取分组列,您可以使用此

grid.query('gridcolumn[isGroupHeader=true]')

Click here 有关 ComponentQuery 的详细信息。

grid.getColumnmanager().getColumns() 不提供分组列的父列。列管理器仅处理叶列。

在迭代列时,您可以访问 isSubHeader 属性 仅在子摸索列中可用,之后通过 ownerCt 属性 您可以访问父列。

希望这对您有所帮助。