网格面板中的EXTJS 4 Json嵌套数据
这个话题在网上已经讨论过好几次了,但没有一个话题能帮我解决问题。 我的javascript代码接收JSON嵌套数据。所有JSON数据级别1数据都在网格面板中转录,但所有子数据都没有。 我试过很多方法,但都不可能。 这就是为什么我请你帮我 我的JSON:网格面板中的EXTJS 4 Json嵌套数据,json,model,extjs4,nested,gridpanel,Json,Model,Extjs4,Nested,Gridpanel,这个话题在网上已经讨论过好几次了,但没有一个话题能帮我解决问题。 我的javascript代码接收JSON嵌套数据。所有JSON数据级别1数据都在网格面板中转录,但所有子数据都没有。 我试过很多方法,但都不可能。 这就是为什么我请你帮我 我的JSON: { "success":true, "error":false, "redirectUrl":null, "fund":[{ "cat_id":1, "catname":"Europe OE Japan Large
{
"success":true,
"error":false,
"redirectUrl":null,
"fund":[{
"cat_id":1,
"catname":"Europe OE Japan Large-Cap Equity",
"region":{
"region_id":2,
"region_name":"JAPAN"
}
},{
"cat_id":2,
"catname":"Europe OE Europe Large-Cap Growth Equity",
"region":{
"region_id":1,
"region_name":"EUROPE"
}
}]
}
我的模型:
var Recommended = new function() {
this.DataModel = function() {
Ext.define('Fund', {
extend: 'Ext.data.Model',
fields: [{
name: 'catname',
type: 'string'
},{
name: 'cat_id',
type: 'int'
}],
proxy :{
type: 'rest',
url: application +'directory/function',
reader: {
type: 'json',
root: 'fund'
}
},
associations: [{
type: 'hasOne',
model: 'Region',
primaryKey: 'region_id',
name:'region'
}]
});
Ext.define('Region', {
extend: 'Ext.data.Model',
fields: [{
name: 'region_name',
type: 'string'
},{
name: 'region_id',
type: 'int'
}]
});
}
“我的存储和网格”面板:
this.JSONstore = function() {
var storeRecommended;
storeRecommended = Ext.create('Ext.data.Store', {
model: 'Fund',
autoLoad:true,
groupField: 'region_name'
});
var colModel =
[
{
text: 'REGION',
width: 200,
dataIndex: 'region_name',
name:'region_name',
mapping:'region.region_name'
},{
text: 'MORNINGSTAR',
width: 300,
dataIndex: 'catname',
name:'catname'
}
];
var groupingFeature = Ext.create('Ext.grid.feature.Grouping',{
groupHeaderTpl: 'Classe: {name} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})',
hideGroupedHeader: false
});
var grid = Ext.create('Ext.grid.Panel', {
renderTo: 'recommendedlists',
collapsible: true,
iconCls: 'icon-grid',
frame: true,
store: storeRecommended,
width: 1200,
height: 400,
title: 'Test',
resizable: true,
features: [groupingFeature],
columns: colModel,
fbar : ['->', {
text:'Clear Grouping',
iconCls: 'icon-clear-group',
handler : function(){
groupingFeature.disable();
}
}]
});
}
this.initControlsOnload = function() {
Recommended.DataModel();
Recommended.JSONstore();
}
} // close Recommended function
问题是绑定到网格的商店对区域一无所知。它储存资金。因此,您不能要求将列映射到存储区之外的数据属性。 这家商店的资金记录一目了然。当然,单个基金本身可能知道它所属的地区,但包含基金列表的商店却不知道 怎么办 需要做的是在客户端将数据结构扁平化。为什么?因为网格是平的。如果每个基金有多个地区,那么我们将讨论不同的解决方案 怎么做 如果您控制此应用程序的服务器端,然后向基金对象添加一个区域字段,则您的数据集简单、直接,更重要的是平坦。如果不能(或不想)更改服务器端,则可以更改客户端模型。基本上,您会将您的基金模型更改为以下内容:
Ext.define('Fund', {
extend: 'Ext.data.Model',
fields: [
{ name: 'catname', type: 'string' },
{ name: 'cat_id', type: 'int' },
{ name: 'region_name', type: 'string',
mapping: 'region.region_name'},
{ name: 'region_id', type: 'int',
mapping: 'region.region_id'}
]
....
});
你看到我们在那里做了什么吗?我们将区域数据平铺到基金记录中。现在,您的商店将不会出现按名称访问区域名称数据的问题
祝你好运
Dmitry。问题是绑定到网格的商店对区域一无所知。它储存资金。因此,您不能要求将列映射到存储区之外的数据属性。 这家商店的资金记录一目了然。当然,单个基金本身可能知道它所属的地区,但包含基金列表的商店却不知道 怎么办 需要做的是在客户端将数据结构扁平化。为什么?因为网格是平的。如果每个基金有多个地区,那么我们将讨论不同的解决方案 怎么做 如果您控制此应用程序的服务器端,然后向基金对象添加一个区域字段,则您的数据集简单、直接,更重要的是平坦。如果不能(或不想)更改服务器端,则可以更改客户端模型。基本上,您会将您的基金模型更改为以下内容:
Ext.define('Fund', {
extend: 'Ext.data.Model',
fields: [
{ name: 'catname', type: 'string' },
{ name: 'cat_id', type: 'int' },
{ name: 'region_name', type: 'string',
mapping: 'region.region_name'},
{ name: 'region_id', type: 'int',
mapping: 'region.region_id'}
]
....
});
你看到我们在那里做了什么吗?我们将区域数据平铺到基金记录中。现在,您的商店将不会出现按名称访问区域名称数据的问题
祝你好运
Dmitry。可能的重复Hi Dmitri的可能重复,多亏了你,我的问题解决了。我试图使用映射,但我错了,因为我把它放在了区域数据模型中,而不是基金数据模型中。非常感谢你,多亏了你,我的问题解决了。我试图使用映射,但我错了,因为我把它放在了区域数据模型中,而不是基金数据模型中。多谢各位