ExtJs Grid с данными из JsonStore не загружается - PullRequest
2 голосов
/ 17 февраля 2011

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

JSON возвращается из MyExtJs.php:


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


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

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'
                                  });

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

С уважением, Dan

1 Ответ

3 голосов
/ 17 февраля 2011

В настройках вашего поля есть свойство "mapping", например:

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 для чтения данныхИсходя из сервера, этот набор «полей» в настройках Store передается в его DataReader для самостоятельной настройки.DataReader использует Ext.data.Field для каждого читаемого поля, посмотрите здесь , документы ExtJS хороши!

...