Extjs 4 - объединение двух столбцов сетки - PullRequest
8 голосов
/ 09 августа 2011

У меня есть хранилище данных и сетка. Я пытаюсь объявить новый столбец с именем FullName, который объединит два индекса данных. Потратив некоторое время на изучение этой проблемы, я понимаю, что это может быть либо средство визуализации (уровень сетки), либо пользовательский столбец в хранилище данных (отображение?).

Может ли кто-нибудь предоставить пример кода, который реализует такой столбец?

// XML
<person>
    <first_name>John</first_name>
    <last_name>Smith</last_name>
</person> 

// Store
Ext.create('Ext.data.Store', {
    autoLoad: true,
    storeId: 'TestStore',
    fields: ['first_name', 'last_name'],
    data: parsed_xml_object,
    proxy: {
        type: 'memory',
        reader: {
            type: 'xml',
            record: 'person'
        }
    }
});

// Grid
TestGrid = Ext.create('Ext.grid.Panel', {
    title: 'Test',
    store: Ext.data.StoreManager.lookup('TestStore'),
    columns: [
        { header: 'First Name', dataIndex: 'first_name' },
        { header: 'Last Name Name', dataIndex: 'last_name' },
     ],
    height: 200,
    autowidth: true
});

Ответы [ 2 ]

11 голосов
/ 09 августа 2011

Использовать пользовательский рендер:

{
   header: "Name",
   dataIndex: 'last_name',
   renderer: function(value, element, record) {
       return record.data['last_name'] + ', ' + record.data['first_name'];
   }
}
2 голосов
/ 10 августа 2011

вы можете использовать для него templeteColumn, который является классом определения столбца, который отображает значение путем обработки данных модели с использованием настроенного XTemplate

http://docs.sencha.com/ext-js/4-0/#/api/Ext.grid.column.Template

...