2011-08-08 84 views
7

我有一個數據存儲和一個網格。我正在嘗試聲明一個名爲FullName的新列,它將結合兩個數據索引。花了一些時間研究這個問題後,我明白它可以是渲染器(網格級),也可以是數據存儲區中的自定義列(映射?)。Extjs 4 - 組合兩個網格列

有人可以提供一個代碼示例,實現這樣的列?

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

回答

10

使用自定義渲染:

{ 
    header: "Name", 
    dataIndex: 'last_name', 
    renderer: function(value, p, r) { 
     return r.data['last_name'] + ', ' + r.data['first_name']; 
    } 
} 
+0

謝謝!這工作! –

+0

@Diodeus感謝您的代碼,但您能否向我解釋anon函數中的參數是什麼意思?有這方面的文件嗎? – MHTri

+0

請參閱「選項1.定義自定義渲染器」,大約1/2說下頁面:http://www.sencha.com/learn/grid-faq/ –