我有一个这样的网格存储。
var gridStore = Ext.create('Ext.data.Store',{
proxy : {
type : 'ajax',
actionMethods : {
read : 'POST'
},
url : 'getECIAgentWrapperJobs.do',
reader : {
type : 'json',
rootProperty : 'rows',
totalProperty : 'results'
}
},
pageSize : 3,
autoLoad : {start: 0, limit: 3}
});
很明显,它向URL发出AJAX请求。 我为此商店获得的JSON响应如下所示:
{
"results":2,
"rows":[
{
"pkTable1":1,
"name":"Rick",
"eciAgentJob":{
"pkTable2":11,
"name":"Play Local Ar",
},
}
],
"msg":null,
"success":true,
}
现在这是我的网格的外观:
var mappedEciAgentJobsGrids = Ext.create('Ext.grid.Panel',{
store : gridStore,
columns : [
{
dataIndex : 'pkTable1',
header : 'Pk of table 1'
},
{
dataIndex : 'name',
header : 'Name'
},
{
dataIndex : 'eciAgentJob.pkTable2',
header : 'Pk of Table 2'
}
]
});
现在在我的UI中,前2列(分别具有dataIndex:pkTable2和name)可以正常加载。但是对于第三个,它不是。 我知道这是因为我已经使用dataIndex作为'eciAgentJob.pkTable2'。但是,当我们像我那样获得响应时,将数据加载到列中的方式是什么(其中eciAgentJob是原始JSON中的对象)。 请帮忙。
编辑:由于其他一些用例原因,我不想使用渲染器。
答案 0 :(得分:2)
在模型中定义一个新字段,并使用必填字段进行映射。在转换功能中,从记录中选择任何值。
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{ name: 'name', type: 'string ' },
{
name: 'columnName',
convert: function (value, record) {
return "return what ever you want"
}
}
]
});