【问题标题】:ExtJS 4 using store filter with combobox and gridPanel - filtered data not shownExtJS 4 使用带有组合框和 gridPanel 的存储过滤器 - 未显示过滤的数据
【发布时间】:2012-04-23 19:17:04
【问题描述】:

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

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

“记录列表存储”

我有

xtype: 组合;

看起来像这样:

            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
                   }

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

第三部分,select函数是:

_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());
    },

这里出现了第三个存储,我认为它可以用于获取过滤后的数据。问题是控制台日志显示我发送了过滤器,但每次我得到空结果。但是,如果一切正常,我认为应该有一些信息,所以有错误或缺少某些东西,但我不知道应该做什么。

【问题讨论】:

  • 所以使用这个_filterRecords: function() { var a = Ext.getCmp('records_list_author_id').getValue( ); var rec = Ext.getStore('RecordsListStore'); rec.filters.clear(); rec.filter([{ "property":'author_id', "value": a }]); console.log(a); },我现在可以在网格中加载信息,我只需要在我的 SQL 查询中添加 $data['filter'] 但现在我想重新加载没有过滤器的商店有什么想法吗?我试试这个handler: function() { var rec = Ext.getStore('RecordsListStore'); rec.load(); } 但没有成功

标签: ajax extjs


【解决方案1】:

getValue() 的组合框将为您提供组合框的价值,而不是商店中的索引。所以在你得到这个值之后,你需要用store.findExact('some_field', value) 之类的东西实际查找记录,并且只有在getAt() 之后才使用你得到的索引。

【讨论】:

  • 嗯,也许我的问题不是很解释,但我仍然在与 ExtJS 斗争。不管怎样,从组合中使用getValue(),我得到了所选元素的实际 id,之后我用它来创建我的 SQL 查询。例如 - SELECT...WHERE author_id = 这里来自 getValue() 的值。它在 r 服务器端过滤方面工作正常。我找到了一种重新加载整个网格的方法,只需在load() 之前调用clearFilter();,这也有效。
  • 现在,随着网格重置,我需要返回组合框的 emptyText 值,但我想这类似于获取完整的商店信息。感谢对沙的支持!
  • 重置组合框空值似乎是一项简单的任务,但由于我在 ExtJS 4 中发现没有什么容易的,我将发布我是如何做到的:var cBox1 = Ext.getCmp('records_list_form_id'); var cBox2 = Ext.getCmp('records_list_author_id'); cBox1.reset(); cBox2.reset();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
相关资源
最近更新 更多