在另一个网格上选择参数的加载存储

时间:2013-07-06 11:43:59

标签: extjs extjs4 extjs-stores

我有这段代码:

Ext.define('MyDesktop.Opport', {
extend: 'Ext.ux.desktop.Module',
requires: [
    'Ext.data.ArrayStore',
    'Ext.util.Format',
    'Ext.grid.Panel',
    'Ext.grid.RowNumberer',
/***********************/
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.panel.*'
/***********************/
],


id:'opp',
createWindow : function(){
    var storeop = Ext.create('Ext.data.JsonStore', {
        proxy: {
            type: 'ajax',
            url: 'PHP/afficherop.php',
            reader: {
                type: 'json',               // format fichier : JSON
                root: 'enregistrements',    // D?but des donn?es
                idProperty: 'id'            // cl? primaire
            }
        },
        fields: ['id','date','infos','idProd','idcl']
    });

    var storecl = Ext.create('Ext.data.JsonStore', {
        proxy: {
            type: 'ajax',

            url: 'PHP/afficher.php',
            reader: {
                type: 'json',               // format fichier : JSON
                root: 'enregistrements',    // D?but des donn?es
                idProperty: 'id'            // cl? primaire
            }
        },
        fields: ['id','type','nom','prenom','mat']
    });

    storecl.load();
    var desktop = this.app.getDesktop();
    var win = desktop.getWindow('opp');
    /*******************/
    if(!win){
        win = desktop.createWindow({
            id: 'opp',
            title:'Opportunités',
            width:500,
            height:480,
            iconCls: 'bogus',
            animCollapse:false,
            constrainHeader:true,
            layout: 'border',
            align: 'center',

            items: [
                {
                    xtype: 'grid',
                    flex: 1,
                    split: true,
                    border: true,
                    region: 'center',
                    store: storecl,

                    title: 'Client',
                    columns: [
                       // new Ext.grid.RowNumberer(),
                        {text: 'ID',dataIndex: 'id'},
                        { text: 'type',align: 'center',dataIndex: 'type'},
                        { text: 'nom',align: 'center',dataIndex: 'nom'},
                        { text: 'Prénom',align: 'center',dataIndex: 'prenom'},
                        { text: 'Matricule',align: 'center',dataIndex: 'mat'}
                    ],
                    listeners: {itemdblclick: function(grid ,record){
                    var rr = grid.getSelectionModel();
                    var rs = rr.getSelection();
                        var idc = rs[0].get('id');
                        Ext.Ajax.request({
                            url: 'PHP/op.php',
                            params: {
                                idcl: idc
                            }
                             });
                        storeop.load({params:{idcl: idc}});
                }}
                },{
                    xtype: 'grid',
                    flex: 1,
                    region: 'south',
                    border: true,
                    store: storeop,
                    title: 'Liste des opportunités',
                    columns: [
                        // new Ext.grid.RowNumberer(),
                        {text: 'ID',dataIndex: 'id'},
                        { text: 'Date',align: 'center',dataIndex: 'date'},
                        { text: 'Info',align: 'center',dataIndex: 'infos'},
                        { text: 'Produit',align: 'center',dataIndex: 'idProd'},
                        { text: 'CLient',align: 'center',dataIndex: 'idcl'}
                    ]
                }
            ]
        })
    }
    return win;
}
});

我希望第二个网格显示从商店商店加载的记录,其中包含从第一个网格中选择的参数。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

您的第二个网格需要第二个Store实例。不要对两个网格使用相同的商店。

答案 1 :(得分:0)

您可以从第一个网格中获取所选行:

var selectedRecord = firstGrid.getSelectionModel().getSelection()[0];

在这里,我假设你有一个选择模型。要将此selectedRecord加载到您的第二个grid,您必须loadDatastore

list.push(selectedRecord.data);
secondGrid.store.loadData(list, false);

请注意,您必须为每个store使用不同的grid