extjs 使用同一商店填充2个网格

dm7nw8vv  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(132)

我有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'
                        }
                    ],

我有两个网格,这两个网格将从同一个商店Person填充它自己。这两个网格在一个窗口中。当窗口加载时,我填充网格如下;

更新13

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)上显示所有的体育信息,并在网格1(noOfMedalsnoOfGoldsWHERE sportId='3'上显示体育信息。我该怎么做呢?

lrpiutwd

lrpiutwd1#

简短的回答-你不能。如果你需要在同一时间呈现两个不同的网格与相同的存储,你需要克隆存储,并有另一个副本。
如果不是在同一时间-你可以使用过滤和过滤前一个存储网格显示。

hpcdzsge

hpcdzsge2#

根据第一个商店创建额外商店,仅对第二个商店应用筛选器

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

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

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

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

相关问题