2

我需要定期在网格的存储中添加新数据。商店由以下代码定义:

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'物业会挽救局面吗?

4

2 回答 2

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' },
        ...
    ]
}
于 2011-05-14T21:48:37.563 回答
1

我不习惯 GroupingStores,但我认为读者期望一个 json 对象{ Id:0, Name: 'MyName' }或此类对象的数组,然后尝试将它们与注册的字段名匹配。但我不知道你的数组中有什么所以这只是一个猜测

于 2011-05-13T12:32:34.417 回答