ExtJs Grid с данными из JsonStore не загружается

Привет всем, у меня есть ExtJS 3.2, PHP5.3 и Oracle 10g XE.

JSON вернулся из MyExtJs.php:


[{"FIRST_NAME":"Эллен","LAST_NAME":"Абель"},{"FIRST_NAME":"Сундар","LAST_NAME":"Анде"}, {"FIRST_NAME":"Може","LAST_NAME": "Аткинсон"},{"FIRST_NAME":"Дэвид","LAST_NAME":"Остин"},{"FIRST_NAME":"Германн","LAST_NAME":"Бэр"},{"FIRST_NAME":"Шелли", "LAST_NAME":"Байда"},{"FIRST_NAME":"Амит","LAST_NAME":"Банда"},{"FIRST_NAME":"Элизабет","LAST_NAME":"Бейтс"},{"FIRST_NAME": "Сара","LAST_NAME":"Белл"},{"FIRST_NAME":"Дэвид","LAST_NAME":"Бернштейн"}]


Хранилище данных:

var store = new Ext.data.JsonStore( {  
                  autoLoad: true,  
                  url: 'MyExtJs.php',  
                  fields: [  
                           {name: 'firstname'},  
                           {name: 'lastname'}  
                          ]  
                                     });

Сетки:

var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
            {
                id       : 'fname',
                header   : 'First Name', 
                width    :  160, 
                sortable :  true, 
                dataIndex: 'firstname'
            },
            {
                id       : 'lname',
                header   : 'Last Name' ,
                width    :  75, 
                sortable :  true,  
                dataIndex:  'lastname'
            }
                ],
        stripeRows: true,
        height: 300,
        width: 500,
        title: 'Report', 
        autoExpandColumn: 'lname',   
        stateful: true,
        stateId: 'grid'
                                  });

Я показываю только заголовок и границы сетки, но не данные внутри.

С уважением, Дэн


person Cearnau Dan    schedule 17.02.2011    source источник
comment
Ну, поля JSON - FIRST_NAME, LAST_NAME, и в вашем хранилище данных вы говорите имя и фамилию.   -  person Radoslav Georgiev    schedule 17.02.2011


Ответы (1)


В конфигурации ваших полей включите свойство «сопоставление», например:

var store = new Ext.data.JsonStore( {  
    autoLoad: true,  
    url: 'MyExtJs.php',  
    fields: [  
        {name: 'firstname', mapping:'FIRST_NAME'},  
        {name: 'lastname', mapping:'LAST_NAME'}  
    ]  
});

Это не Ext.data.Store, который читает ваш JSON, он использует Ext.data.DataReader для чтения данных, поступающих с сервера, это свойство «поля», установленное в конфигурации хранилища, передается в его DataReader для настройки себя. DataReader использует Ext.data.Field для каждого читаемого поля, см. здесь документы ExtJS хороши!

person alexbrina    schedule 17.02.2011