Не удается загрузить данные в сеточную панель ExtJS с помощью loadData () - PullRequest
2 голосов
/ 13 мая 2011

Мне нужно периодически добавлять новые данные в хранилище сетки.Хранилище определяется следующим кодом:

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().datajson есть массив с действительными данными, но в data есть только нули и пустые строки.

Я что-то упустил?Спасет ли свойство handleAs:'json' ситуацию?

Ответы [ 2 ]

3 голосов
/ 15 мая 2011

JsonReader требует, чтобы 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 голос
/ 13 мая 2011

Я не так привык к GroupingStores, но я думаю, что Reader ожидает json-объект типа { Id:0, Name: 'MyName' } или массив таких объектов, а затем пытается сопоставить их с зарегистрированными именами полей. Но я не знаю, что находится в ваших массивах, так что это всего лишь предположение

...