在行上加载网格点击另一个网格

时间:2013-12-26 13:26:13

标签: json servlets extjs4

当我单击另一个网格的一行(网格1)时,我无法加载一个网格的存储(网格2)。当我点击一行时,它将http请求发送到Grid2的servlet,作为响应,我得到了正确的数据。但我没有在Grid 2商店得到那个回应。实际上我正在尝试将该响应保存在一个数组中,我正在创建存储到第二个网格的数组。下面是第一个网格的监听部分:

listeners: {
    'select': function(grid,record, rowIndex,e) {
        var selectedvalue = record.get('YCSET_ID');
        //callAjaxToCheckSession(selectedvalue);
        //alert(selectedvalue);
        console.log('click'+selectedvalue); 
        changeConnection(selectedvalue,yieldstore,records)
        //yieldstore is the store for second grid and records is an array
}

现在功能changeConnection

function changeConnection(selected,yieldstore,records){
    alert(selected);
    Ext.Ajax.request({
        url: 'YieldCurveServlet', //servlet of 2nd grid
        method:'GET',
        headers: {
            'Content-Type': 'text/html'
        },
        params: {
            YCSET_ID: selected
        },
        success: function(response, opts) {
            var res = Ext.decode(response.responseText);
            console.dir(res); //here I am getting correct response

            if(res !== null &&  typeof (res) !==  'undefined'){
                // loop through the data
                Ext.each(res.data, function(obj){
                    //add the records to the array
                    records.push({
                        YCSET_ID: obj.YCSET_ID,
                        YCSET_TENOR: obj.YCSET_TENOR,
                        YCSET_TENOR_UNIT: obj.YCSET_TENOR_UNIT,
                        YCSET_BID_RATE: obj.YCSET_BID_RATE,
                        YCSET_ASK_RATE: obj.YCSET_ASK_RATE         
                    })
                });
                //update the store with the data that we got
                yieldstore.loadData(records);
            }
        },
        failure: function(response, opts) {
            console.log('server-side failure with status code ' + response.status);
        }
    });
}

及以下是第二个网格的商店定义:

    var records = [];
    var yieldstore = Ext.create('Ext.data.Store', {
        fields :['YCSET_ID',
        'YCSET_TENOR','YCSET_TENOR_UNIT',{
            name:'YCSET_BID_RATE', 
            mapping :'YCSET_BID_RATE',
            type: 'double'
        },{
            name:'YCSET_ASK_RATE', 
            type: 'double'
        }],
        data: records   
    });

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在你的ExtJs代码上发生了很多奇怪的事情。

1.-我建议您使用绑定到网格的商店。 (见官方文件)

2.-将模型绑定到您的商店。

3.-定义(如果有意义)您自己的扩展存储(EmployeesStore)的类。

4.-为了在第二个网格中加载信息,请执行以下操作:

var storeOfSecondGrid = Ext.ComponentQuery.query('grid[itemId=mySecondGrid]')[0].getStore();//where itemId is part of your grid config

storeOfSecondGrid.load({

callback:function(){

console.log('after load');

}

});