0

我得到未捕获的类型错误:单击 ExtJS 上的 Live Serach 网格面板的标题工具栏时,无法调用未定义的方法 'getColumns'。我使用过滤器功能实现过滤器。

这是我的一些代码:

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]
 ...

这是发生异常的代码块:

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);
        }
    });

任何帮助将不胜感激!

4

4 回答 4

4

在进行了较重的调试之后,4.2 版似乎grid.columnManager不太支持。对于任何其他有相同问题的人,您应该使用:

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

或者

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

获取网格上的列。我相信这不适用于分组列,但我还没有测试过。

于 2013-07-23T16:40:59.290 回答
0

正如其他人已经发布的那样,您不应使用该columnManager属性。检查 Sencha 关于它的注释:

http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.grid.ColumnManager

这是供框架内部使用的私有实用程序类。不要依赖它的存在。

我认为最好的选择是将其用于所有列:

grid.headerCt.getGridColumns()

如果您只需要可见列,则此操作:

grid.headerCt.getVisibleGridColumns()
于 2014-07-04T13:27:39.357 回答
0
Ext.Array.each(grid.columnManager.getColumns(), function (column) ...

改成

Ext.Array.each(grid.columns, function (column) {

它运作良好:)

于 2013-08-06T23:15:07.263 回答
0

grid.columns 不是受支持的/公共属性。例如,它可能不包含使用重新配置添加的列。如果您使用 4.2.0,它将包含它们,但不包含在 4.2.1/4.2.2 中。即使您添加 Ext.selection.CheckboxModel 也会发生这种情况,复选框列将不会包含在 4.2.2 中,如果您从中获取索引,您最终会出现“索引不匹配”,比如说 cellClick 事件。

不幸的是,grid.columnManager 或 grid.getColumnManager() 在 4.2.1/4.2.2 中是新的,它是一个私有属性/方法。简而言之,其中任何一个都可能停止与 ExtJS 的下一个版本一起使用,并且“列”属性在所有情况下都不是可靠的。

在这里查看一些讨论: http ://www.sencha.com/forum/showthread.php?277525

我还没有找到任何官方支持的解决方案。我无法添加评论,所以我不得不将其作为完整答案发布,谢谢!

于 2014-01-24T10:40:40.243 回答