我需要定期在网格存储中添加新数据。商店由以下代码定义:
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
属性(property)和json
this.getStore().data
中的属性不一样。在 json
有包含有效数据的数组,但在 data
中只有零和空白字符串。
我错过了什么吗? handleAs:'json'
会吗?属性(property)拯救情况?
最佳答案
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' },
...
]
}
关于javascript - 无法使用 loadData() 在 ExtJS gridpanel 中加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5991404/