我有一个表格,其中有一个相关的网格,可以满足一对多的关系。 当我使用url加载表单时,我也使用以下代码获取网格数据
this.load({
url:reportURL + 'editReport',
waitMsg:'Loading...',
params:{
reportIdKey: this.reportId
},
success:function(form,action){
response = action.result.data; // Contains the data for the grid
}
})
返回的json如下
{
"data":{
"setupDt":"09-27-2011",
"expireDt":"12-31-1950",
"reportNm":"Report_55283",
"templateNm":"risk_measures_tmpl",
"GridData":
*[
{
"sId":1,
"sNm":"W",
"mId":1,
"mNm":"R",
"pId":"..",
"pIdAlias":"",
"bId":"...",
"bIdAlias":"",
"pDesc":"FUND==GB|ACT==WG|W",
"grpId":"",
"scF":"",
"sortSeq":1,
"grpN":1
}
]*
如何将上面json中的网格数据加载到我的网格中。
请帮忙.. }, “成功”:“真” }
答案 0 :(得分:1)
ExtJS网格使用商店来更新网格。事实上,商店是必需的。您只需使用json store即可。当您收到回复时,当您收到针对商店的电话loadData
时。您使用loadData
而不是load
的原因是因为表单已经完成了AJAX调用,而load
会尝试重新创建它。例如(这都假设是ExtJS 3.4,我不知道你使用的是什么版本,但它在ExtJS 4中几乎是一样的):
var gridStore = new Ext.data.JsonStore({
root: 'GridData',
fields: [
'sid',
// ... your other field names under 'GridData'
]
});
var myGrid = new Ext.grid.GridPanel({
store: gridStore,
// ... your other config options here
});
this.load({
url:reportURL + 'editReport',
waitMsg:'Loading...',
params:{
reportIdKey: this.reportId
},
success:function(form,action){
response = action.result.data; // Contains the data for the grid
gridStore.loadData(response);
}
});
一旦loadData
完成,网格将自动更新为构建网格时网格附加到商店的普通load
事件处理程序的一部分。
答案 1 :(得分:0)
我通过迭代结果json并在store.getRecordType({field:value})中设置相应的属性来解决这个问题。