grid.getColumnmanager()。getColumns()没有在Ext JS网格中给出父列

时间:2016-04-04 10:00:15

标签: grid extjs4.2

我的网格有分组列。

我的部分代码如下:

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(),则返回以下列:

Column1
innerColumn1
innerColumn2 
Column3

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

2 个答案:

答案 0 :(得分:1)

获取所有列的解决方案之一是使用Ext ComponentQuery。我创建了这个fiddle。运行这个小提琴后,请查看开发人员控制台。

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

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

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

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

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

Click here有关ComponentQuery的更多信息。

答案 1 :(得分:1)

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

在迭代列时,您可以访问仅在子窗格列中可用的isSubHeader属性,然后通过ownerCt属性访问父列。

希望这会有所帮助。