使用相同的商店填充2个网格

时间:2012-07-30 05:29:36

标签: extjs grid extjs4 extjs4.1 extjs-mvc

我有2个网格,这两个网格都会从同一个商店Person自我填充。

我遇到的问题是,在第一个网格中,我将加载所有体育和它拥有的玩家数量。在第二个网格中,我将仅显示一项运动赢得的奖牌和金牌数量,SportID = 3。我怎样才能做到这一点 ?当我加载网格时,它将填充所有

 {
                    xtype: 'gridpanel',
                    title: 'ALl Sports',
                    store: 'Person',
                    columns: [
                    {
                            xtype: 'gridcolumn',
                            dataIndex: 'SportID',
                            text: 'Sport ID'
                        },
                        {
                            xtype: 'gridcolumn',
                            dataIndex: 'SportName',
                            text: 'Sport Name'
                        },                        
                        {
                            xtype: 'gridcolumn',
                            dataIndex: 'NoOfPlayers',
                            text: 'No Of Players'
                        }
                    ]
                },
                {
                    xtype: 'gridpanel',
                    title: 'Sport Medals for Sport ID 3',
                    store: 'Person',
                    columns: [
                        {
                            xtype: 'gridcolumn',
                            dataIndex: 'noOfMedals',
                            text: 'No Of Medals'
                        },
                        {
                            xtype: 'gridcolumn',
                            dataIndex: 'NoOfGold',
                            text: 'No Of Gold'
                        }
                    ],

我有2个网格,这两个网格都会从同一个商店Person自我填充。这两个网格在窗口中。当窗口加载时,我按如下方式填充网格;

更新1 ############################# 3

var personStore = Ext.getStore('Person');
var r = personStore.getAt(0);
personStore.on('load', function() {
    r = personStore.getAt(0);
st.filter({
    filterFn: function(rec) {
        return rec.get('PersonId') == r.get('PersonId'); 
    }


});
personStore.load();
####################### 3

但是,两个网格都填充了相同的数据集。我想要的是显示网格1上的所有体育信息(sportIDsportNamenoOfPlayers)和显示体育信息(noOfMedalsnoOfGoldsWHERE sportId='3'。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

简短回答 - 你不能。如果您需要在同一商店同时呈现两个不同的网格,则需要克隆商店并获得另一个副本。

如果不是同时 - 您可以在显示网格之前使用过滤和过滤一个商店。

答案 1 :(得分:0)

根据第一家商店创建额外的商店,仅将过滤器应用于第二家商店。

    DSScheduleDay: {
        source: '{DSSchedule}',
        filters: [function (rec) {

            return (rec.get('type_id') !== 'V');
        }]
    },

    DSScheduleWeek: {
        source: '{DSSchedule}',
        filters: [function (rec) {

            return (rec.get('type_id') === 'V');
        }]
    },