当我单击另一个网格的一行(网格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
});
我做错了什么?
答案 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');
}
});