ExtJS 4基于组合框选择渲染新网格

时间:2012-04-21 11:10:54

标签: ajax extjs

我有一个使用远程存储和远程分页的网格,因为我有太多记录。主网格的存储是:

Ext.define('ArD.store.RecordsListStore', {

    extend: 'Ext.data.Store',
    model: 'ArD.model.RecordsListModel',

    autoLoad: true,
    autoSync: true,
    remoteSort: true,
    remoteFilter: true,

    pageSize: 15,


    proxy: {
        type: 'ajax',
        actionMethods: 'POST',
        api: {
            read:  g_settings.baseUrl + 'index.php/recordslist/getAll',

            destroy: g_settings.baseUrl + 'index.php/recordslist/deleteRecord'
        },
        reader: {
            type: 'json',
            root: 'data',
            totalProperty: 'totalCount',
            successProperty: 'success'  
        },
        writer: {
            root: 'data',
            writeAllFields: true,
            encode: true
        }
    }


});

然后我填充我的网格,一切都很好。但问题是我有一个看起来像这样的组合框:

{
                            xtype: 'combo',
                            id: 'records_list_form_id',
                            emptyText: 'Choose Form',
                            editable: false,
                            store: 'FilterRecordsByForm',
                            displayField: 'title',
                            valueField: 'id',
                            lastQuery: '',
                            triggerAction: 'all',
                            queryMode: 'remote',
                            typeAhead: false,
                            width: 200,
                            listeners: {
                                select: this._filterRecords
                            }
                        }

当我从组合框中选择一些东西时,就有了这个功能:

_filterRecords: function()
    {
        var recStore =  Ext.getStore('RecordsListStore');
        var a = Ext.getCmp('records_list_form_id').getValue( );
        var rec = Ext.getStore('FilterRecordsByForm').getAt(a);
        console.log(recStore);
    },

主要只是尝试一些东西,但我可以从组合框中获取所选元素的ID,这就是我所在的位置。

我需要的是使用id来创建一个新的查询,使用我的AJAX API(PHP / SQL后端)并使用与此id相关的信息填充网格。在我的情况下,我有1:M关系,所以当我传递Id时,我希望M记录在旧网格的位置呈现。

由于

Leron

2 个答案:

答案 0 :(得分:1)

使用filter()方法。提供您需要过滤的信息,并且商店对象将自动从服务器请求更新的信息(您已经配置了remoteFilter)。

答案 1 :(得分:0)

查看Ext.Ajax()以对服务器端进行按需ajax调用以加载数据,然后使用Store.loadData()或类似的东西来重新填充网格。