ExtJS 4使用存储过滤器与combobox和gridPanel - 过滤后的数据未显示

时间:2012-04-23 06:47:21

标签: ajax extjs

我真的很难理解或者说更正确的说法 - 在我的任何商店使用过滤器并在网格中加载信息。我有一个更复杂的任务,但为了理解事情是如何工作的,我决定使用最简单的例子,因为我可以只看到事情的发生,然后添加更多逻辑,这样我就可以磨练自己的知识。但是我仍然没有得到任何令人鼓舞的结果,所以我再次寻求帮助。

我的模型中有一个gridPanel,它使用自己的商店,在这种情况下:

  

“RecordsListStore”

我有

  

xtype:combo;

看起来像这样:

            xtype: 'combo',
            id: 'records_list_author_id',
            emptyText: 'Филтриране по автор',
            editable: false,
            store: 'Users',
            displayField: 'firstname',
            valueField: 'id',
            lastQuery: '',
                        triggerAction: 'all',
                        queryMode: 'remote',
                        typeAhead: false,
            width: 200,
            listeners: {
                          select: this._filterRecords
                   }

使用它自己的商店在组合框中加载数据,可以从用户中选择。

第三部分,选择功能是:

_filterRecords: function()
    {
        var recStore =  Ext.getStore('FilterRecordsByAuthor');
        var a = Ext.getCmp('records_list_author_id').getValue( );
        var rec = Ext.getStore('FilterRecordsByForm').getAt(a);
        recStore.filters.clear();
            //recStore.load();
        recStore.filter([{
            "property":'form_id',
            "value": 1
                   }]);
        console.log(recStore.load());
    },

我认为第三个商店用于获取过滤后的数据。问题是控制台日志显示我发送过滤器,但每次我得到空结果。但如果一切正常,我认为应该有一些信息,所以有错误或缺少一些东西,但我无法弄清楚应该做些什么。

1 个答案:

答案 0 :(得分:1)

组合框的

getValue()将从商店中的组合框而非索引中给出价值。因此,在获得此值后,您需要实际使用store.findExact('some_field', value)之类的内容进行记录,并且仅在getAt()之后使用您获得的索引进行记录。