无法在ExtJ中过滤本地记录

时间:2014-11-10 16:50:46

标签: extjs extjs4.1 frontend

我将数据格式化为哈希数组。 3个字段是id,value和production_group_id。现在我要做的是根据记录的production_group_id过滤组合框。

基本上,存储中的初始填充数据。我想过滤字段。不知何故,听众没有工作。

Ext.define('fabmin.view.ComboColumn', {
    extend: 'Ext.grid.column.Column',
    alias: 'widget.comboboxcolumn',
    width: 100,
    isEditable: true,
    list: [], // list = [{id: 'id1', value: 'value1', production_group_id: 'production_group_id1 }, {id: 'id1', value: 'value1', production_group_id: 'production_group_id1 }]
    initComponent: function(){
        var me = this,
            list = me.list || [];

        if(me.isEditable){
            me.editor = Ext.create('Ext.form.ComboBox',{
                forceSelection: true,
                typeAhead: true,
                queryMode: 'local',
                displayField: 'value',
                valueField: 'id',
                store: Ext.create('Ext.data.ArrayStore', {
                    fields: ['id', 'value','production_group_id'],
                    data: list
                }),
                allowBlank: false,
                listeners: {
                    click: function (v, p, record, rowIndex, colIndex, store, view) {
                        debugger
                        var newdata  = [];;
                        for (i = 0; i < me.store.length; i++) {
                            if (me.store[i].production_group_id == record.production_group_id){
                                newdata.push(me.store[i])
                            }
                        }
                        debugger
                        me.store.load(newdata);
                    },
                    scope: me
                }
            });
        }

        me.renderer = function(v, p, record, rowIndex, colIndex, store, view) {
            var len = list.length,
                currOpt;
            while( len-- ) {
                currOpt = list[ len ];
                if ( v == currOpt.id ) {
                    return currOpt.value;
                }
            }
            return v;
        }
        me.callParent(arguments);
    }
});

1 个答案:

答案 0 :(得分:0)

如果您使用任何字段(包括Ext.form.ComboBox),那么您应该收听change事件。在字段中更改值后触发它,因此当您从列表中选择某些内容时也会触发。