Невозможно отобразить данные в столбце сетки с использованием результатов JSON - PullRequest
5 голосов
/ 22 июня 2019

У меня есть сеточное хранилище с чем-то вроде этого.

var gridStore = Ext.create('Ext.data.Store',{
    proxy : {
        type : 'ajax',
        actionMethods : {
            read : 'POST'
        },
        url : 'getECIAgentWrapperJobs.do',
        reader : {
            type : 'json',
            rootProperty : 'rows',
            totalProperty : 'results'
        }
    },
    pageSize : 3,
    autoLoad : {start: 0, limit: 3}
});

Ясно, что он делает AJAX-запрос к URL.Ответ JSON, который я получаю для этого магазина, выглядит примерно так:

{  
   "results":2,
   "rows":[  
      {  
         "pkTable1":1,
         "name":"Rick",
         "eciAgentJob":{  
            "pkTable2":11,
            "name":"Play Local Ar",
         },
      }
   ],
   "msg":null,
   "success":true,
}

Вот так выглядит моя сетка:

var mappedEciAgentJobsGrids = Ext.create('Ext.grid.Panel',{
        store : gridStore,
        columns : [
            {
                dataIndex : 'pkTable1',
                header : 'Pk of table 1'
            },
            {
                dataIndex : 'name',
                header : 'Name'
            },
            {
                dataIndex : 'eciAgentJob.pkTable2',
                header : 'Pk of Table 2'
            }
        ]
    });  

Теперь в моем пользовательском интерфейсе первые 2 столбца (с dataIndex: pkTable2 и name соответственно) грузится нормально.Но для 3-го это не так.Я знаю, что это потому, что я использовал dataIndex как 'eciAgentJob.pkTable2'.Но тогда что это за способ загрузки данных в столбцах, когда мы получаем ответ, как я получил (где eciAgentJob - это объект внутри исходного JSON).Пожалуйста, помогите.

Редактировать: Я не хочу использовать рендерер из-за некоторых других причин использования.

1 Ответ

2 голосов
/ 23 июня 2019

Определите новое поле в вашей модели и карту с требуемым полем.В функции преобразования выберите любое значение из записи.

 Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'name', type: 'string ' },
        {
         name: 'columnName',

         convert: function (value, record) {
             return "return what ever you want"
         }
     }

    ]
});
...