我有一个网格,在最后两列(Chourly和Cdaily)中,每个单元格都包含一个对象。 数据示例:
{
data: [{
Date: "2018/01/11 21:00:00",
Ahourly: "1",
Chourly: {
val: 2,
status: "Low",
color: "#ffff00"
}
}, ...
success: true
}
这是我的fiddle,请参阅Chourly和Cdaily专栏。
我需要编辑此对象的数据并显示新值。 我尝试使用beforeedit end validateedit,但现在没有成功!
任何帮助?
谢谢,
MPE
答案 0 :(得分:0)
首先要做的是调整商店中的数据模型。 使用"映射"将对象字段中的所有字段容纳到单个字段中, 那样:
var store = Ext.create('Ext.data.JsonStore', {
fields: [
'Date',
'Ahourly',
{name:'ChourlyVal',mapping:'Chourly.val'},
{name:'ChourlyColor',mapping:'Chourly.color'},
{name:'ChourlyStatus',mapping:'Chourly.status'},
{name:'CdailyVal' ,mapping:'Cdaily.val'},
{name:'CdailyColor' ,mapping:'Cdaily.color'},
{name:'CdailyStatus' ,mapping:'Cdaily.status'}
],
proxy: {
type: 'ajax',
url: 'data1.json',
reader: {
type: 'json',
rootProperty: 'data'
}
},
autoLoad: true
});
然后,调整列和渲染器以使用映射的字段:
{
text: 'Chourly',
dataIndex: 'ChourlyVal',
flex: 1,
renderer: function (a, meta, record) {
console.log(record);
meta.tdStyle = "background-color:" + record.data.ChourlyColor + ";";
var cellText = a + " " + record.data.ChourlyStatus;
return cellText;
},
editor: 'textfield'
}
我希望有帮助
答案 1 :(得分:0)
感谢您的回复。我认为这是好方法。 然后我想我必须使用serialize函数将对象与修改后的值一起放回到服务器,如下所示:
fields: ['Date', {
name: 'Chourly',
serialize: function (val, rec) {
return {
'val': rec.get('val'),
'status': rec.get('status'),
'color': rec.get('color')
};
}
}, {
name: 'val',
mapping: 'Chourly.val',
persist: false //Do not write back to server
}, {
name: 'status',
mapping: 'Chourly.status',
persist: false
}, {
name: 'color',
mapping: 'Chourly.color',
persist: false
},
...
]...
现在我必须动态地这样做,因为我事先并不知道用户会咨询哪些数据(Chourly,Dhourly,Ehourly ......)。有没有想过在负载回调上修改模型?