我需要定期在网格商店中添加新数据。商店由以下代码定义:
this.reader = new Ext.data.JsonReader({
idProperty: 'id',
fields: this.lesFields
});
this.ds = new Ext.data.GroupingStore({
reader: this.reader,
data: this.leData,
sortInfo: {field: 'dendisc', direction: 'ASC'},
groupField: 'categorie'
});
当我需要附加一些新数据时,我会使用this.getStore().loadData(this.leData)
执行此操作。从技术上讲,数据确实出现在网格的商店中,但我在显示屏上只看到零(在int
字段中)和空字符串(在string
字段中)。我在Chrome的控制台上做了一些研究,我发现data
属性和json
属性在this.getStore().data
中不一样。在json
中,数组中包含有效数据,但在data
中只有零和空字符串。
我错过了什么吗? handleAs:'json'
属性会保存情况吗?
答案 0 :(得分:3)
JsonReader要求定义root。 root指向包含记录的子属性。
这里是一个取自ext文档的样本:
var myReader = new Ext.data.JsonReader({
idProperty: 'id'
root: 'rows',
totalProperty: 'totalRows',
fields: [
{name: 'id' },
{name: 'name' }
]
});
和要读取的样本数据:
{
success: true,
totalRows: 100,
rows: [ // root
{ id: 1, name: 'Alf' },
{ id: 2, name: 'Ben' },
{ id: 3, name: 'Cod' },
...
]
}
答案 1 :(得分:1)
我不习惯GroupingStores,但我认为Reader期望像{ Id:0, Name: 'MyName' }
这样的json对象或这些对象的数组,然后尝试将它们与已注册的字段名匹配。但我不知道你的数组中有什么,所以这只是一个猜测