2017-01-31 1 views
1

У меня есть этот JSon данные:ExtJS 4.2 - Как сопоставить массив с полем модели и динамически отображать столбец сетки?

{ 
 
    id: 1, 
 
    name: 'something', 
 
    description: 'somethingsomething', 
 
    customers: [{ 
 
    id: 1, 
 
    username: 'cust1' 
 
    }, { 
 
    id: 2, 
 
    username: 'cust2' 
 
    }] 
 
}

В то время как у меня нет никаких проблем, отображающие первые три поля на GridPanel, я тем не менее есть проблема извлечения объекта массива для customers поля. Моя модель выглядит следующим образом:

fields: [ 
 
    'id', { 
 
    name: 'name', 
 
    sortType: Ext.data.SortTypes.asUCString 
 
    }, 
 
    'permanent', { 
 
    name: 'description', 
 
    Type: Ext.data.SortTypes.asUCString 
 
    }, { 
 
    name: 'customers', 
 
    Type: Ext.data.SortTypes.asUCString 
 
    }, { 
 
    name: 'username', 
 
    Type: Ext.data.SortTypes.asUCString, 
 
    mapping: 'customers[0].username' 
 
    } 
 
]

Когда я пытаюсь получить доступ к customers[0].username, он извлекает только те, по этому указанному индексу. Удаление номера индекса возвращает undefined, так как я предполагаю, что он ищет, с какого индекса вернуться. Как правильно получить все customers: [] и отображать его в моей сетке, где она структурирована как:

{ 
 
    xtype: 'gridpanel', 
 
    store: oStore, 
 
    viewConfig: { 
 
    loadMask: false, 
 
    enableTextSelection: true 
 
    }, 
 
    hideHeaders: false, 
 
    bodyBorder: true, 
 
    columns: [{ 
 
    text: 'Customer', 
 
    dataIndex: 'username', 
 
    flex: 1 
 
    }, { 
 
    header: '', 
 
    xtype: 'actioncolumn', 
 
    itemId: 'remove-player-btn', 
 
    width: 50, 
 
    sortable: false, 
 
    resizable: false, 
 
    menuDisabled: true, 
 
    items: [{ 
 
     icon: 'resources/img/x.png', 
 
     tooltip: 'Remove Player', 
 
     scope: oMe 
 
    }], 
 
    editor: { 
 
     xtype: 'text', 
 
     name: 'deleteRow' 
 
    } 
 
    }] 
 
}

ответ

1

Вы можете использовать функцию преобразования доступны в model.This функция преобразования используется для некоторых вычислений цель & картографических данных отклика для нашего needs.For примера я карту имя, как показано ниже:

fields: [ 
{ 
    name:'username', 
    convert:function(value,model) 
    { 
    return model.data.customers.username; 
    } 
} 
] 

Использовать ту же технику для id field.Reply, если возникнут проблемы.

+0

Это сработало! Тем не менее, я не сопоставлял его с помощью 'model.data', а' model.raw', поскольку прежний не был определен. – ralphcarlo

Смежные вопросы