Search code examples
filterextjs4.2gridpanel

"Cannot call method 'getColumns' of undefined " on FiltersFeature of LiveSearchGridPanel ExtJS


im getting the Uncaught TypeError: Cannot call method 'getColumns' of undefined when clicking on the header toolbar of a Live Serach Grid Panel on ExtJS. Im implementing filters with the Filters Feature.

Heres some of my code:

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: "Evento",
        width: 90,
        sortable: true,
        filterable: true,
        dataIndex: 'RH_DESCRIPCION',
        filter: {
            type: 'string'
        }
    }],
    features: [filters]
 ...

This is the block of code where the exception occurs:

Ext.Array.each(grid.columnManager.getColumns(), function (column) {
//Uncaught TypeError: Cannot call method 'getColumns' of undefined
        if (column.filterable === false) {
            filters.removeAtKey(column.dataIndex);
        } else {
            add(column.dataIndex, column.filter, column.filterable);
        }
    });

Any help will be appriciated!


Solution

  • After doing heavier debugging it seems that grid.columnManager isn't very well supported on version 4.2. For any others with the same issue you should use:

    grid.down('headercontainer').getGridColumns();
    

    or

    grid.down('headercontainer').getVisibleGridColumns();
    

    to get a hold of columns on your grid. I believe this won't work with grouped columns, I've not tested it though.