ExtJS Combobox错误:无法读取属性'存储'未定义的

时间:2017-02-02 17:18:40

标签: javascript extjs combobox filtering store

我有一个带有几个标签的标签面板。其中一个包含网格,网格包含3个主题: 1个带有编辑器类型的项目" textfield",以及带有"编辑框"的编辑器的2个项目。

问题:我想基于之前的组合框过滤组合框存储。但由于某种原因,它只是第一次工作。之后,商店返回undefined。

这是我的代码:

items:[{
    xtype: 'grid',
    id:'schema',
    border: false,      
    data:[],
    columns:
    [{
        text     : 'Size',
        dataIndex: 'size',
        id: "SizeDropdown",
        width    : 200,
        sortable : true,
        editor   : {
            xtype: 'combobox',
            id:'SelectSize',
            editable:true,

            valueField: 'typeValue',
            displayField: 'typeValue',
            mode:'local',
            lastQuery: '',
            listeners:{
            },
            store: new Ext.data.SimpleStore({
                fields: ['size', 'typeValue'],
                data: [
                        ['char', '12'],
                        ['char', '30'],
                        ['char', '31'],
                        ['int', '250'],
                        ['int', '500'],
                        ['int', '1000'],
                    ]
            }),
            allowBlank: false,
            validator: function(input){                                 
                return true;
            }
        }   
    }],
    listeners: {
        beforeitemclick: function (eventThis,  record,  rowIndex, e) {

            var SizeStore = Ext.getCmp('SizeDropdown').editor.store

            SizeStore.clearFilter();
            SizeStore.filter('size', record.data.type);
        }
    }

' record.data.type' 返回' char '或者' int ',取决于之前的组合框,过滤效果还可以。但只是第一次。之后它在这里打破:

var SizeStore = Ext.getCmp('SizeDropdown').editor.store

并返回:

Cannot read property 'store' of undefined

我正在使用ExtJs" 4.0.7"

1 个答案:

答案 0 :(得分:0)

在Tab类之外声明商店完成了这项工作。

这是我做的:

        var sizeDropdownStore = new Ext.data.SimpleStore({
            fields: ['size', 'typeValue'],
            data: [
                    ['char', '12'],
                    ['char', '30'],
                    ['char', '31'],
                    ['int', '250'],
                    ['int', '500'],
                    ['int', '1000'],
            ]
        });


        ...{
            xtype: 'combobox',
            id:'SelectSize',
            editable:true,
            valueField: 'typeValue',
            displayField: 'typeValue',
            mode:'local',
            listeners:{
            },
            store: sizeDropdownStore,
            allowBlank: false
        }...