Extjs 4 - 组合两个网格列
问题描述:
我有一个数据存储和一个网格。我正在尝试声明一个名为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
});
答
使用自定义渲染:
{
header: "Name",
dataIndex: 'last_name',
renderer: function(value, p, r) {
return r.data['last_name'] + ', ' + r.data['first_name'];
}
}
答
你可以使用templeteColumn它是一个列定义类,其利用配置XTemplate
http://docs.sencha.com/ext-js/4-0/#/api/Ext.grid.column.Template
处理模型的数据呈现一个值
谢谢!这工作! –
@Diodeus感谢您的代码,但您能否向我解释anon函数中的参数是什么意思?有这方面的文件吗? – MHTri
请参阅“选项1.定义自定义渲染器”,大约1/2说下页面:http://www.sencha.com/learn/grid-faq/ –