@z0091

Ext.JS 4+ Как осуществить отображение связанных данных в Ext.grid.Panel?

Привет! Столкнулся со следующей проблемой.

Имеется 2 модели данных:

Ext.define('ParserGoods.model.GroupList', {
    extend: 'Ext.data.Model',
    fields: [
        'group_id', 'infoblock_id', 'id', 'group_name',
    ],

    associations: [
        {type: 'belongsTo', model: 'ParserGoods.model.InfobloksList',    name: 'infoblock'}
    ],

    proxy: {
        type: 'ajax',
        url: '/group/getlist',
        reader: {
            root: 'data',
            totalProperty: 'totalCount',
            type: 'json'
        },
        simpleSortMode: true
    }

});

Ext.define('ParserGoods.store.GroupListStore', {
    extend: 'Ext.data.Store',
    model: 'ParserGoods.model.GroupList',

    storeId: 'GroupListStore',

    remoteSort: true,
    pageSize: 20,

    sorters: [{
        property: 'group_name',
        direction: 'DESC'
    }],

    autoLoad: true
});


Как видно, модель GroupList связана с моделью InfobloksList как "Многие к одному".

От сервера приходит следующий ответ

{
    "infoblock": {
        "infoblock_name":"Комплектующие",
        "infoblock_id":"1",
        "insert_time":"2014-04-03 13:25:49",
        "id":"27"
    },
    "group_name":"Сетевые адаптеры",
    "group_id":"60c83bfa",
    "infoblock_id":"1",
    "id":"153"
},{
    "infoblock": {
        "infoblock_name":"Комплектующие",
        "infoblock_id":"1",
        "insert_time":"2014-04-03 13:25:49",
        "id":"27"
    },
    "group_name":"Сетевые адаптеры",
    "group_id":"60c83bfa",
    "infoblock_id":"1",
    "id":"153"
}


Я никак не могу понять, как мне вставить эти данные в Ext.grid.Panel. При всем этом мне необходима сортировка и поиск по всем полям.

Пытался так:
{
    text     : 'Id группы',
    flex: 1,
    dataIndex: 'group_id',
    filter: {
        type: 'string'
    }
},{
    text     : 'Название группы',
    flex: 1,
    dataIndex: 'group_name',
    filter: {
        type: 'string'
    }
},{
    text     : 'infoblock_name',
    flex: 1,
    dataIndex: 'infoblock.infoblock_name',
    filter: {
        type: 'string'
    }
}
  • Вопрос задан
  • 2531 просмотр
Пригласить эксперта
Ответы на вопрос 1
@lfs
попробуй
Ext.define('ParserGoods.model.GroupList', {
    extend: 'Ext.data.Model',
    fields: [
  {
        name: 'group_id',
        mapping: 'infoblock.group_id'
    },
  {
        name: 'group_id',
        mapping: 'infoblock.group_id'
    },
  {
        name: 'group_name',
        mapping: 'infoblock.group_name'
    }
    ],

    associations: [
        {type: 'belongsTo', model: 'ParserGoods.model.InfobloksList',    name: 'infoblock'}
    ],

    proxy: {
        type: 'ajax',
        url: '/group/getlist',
        reader: {
            root: 'data',
            totalProperty: 'totalCount',
            type: 'json'
        },
        simpleSortMode: true
    }

});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы