我有一个 Ext.grid.Panel,我想按字段对其进行分组,但是在分组标题中显示不同的字段。例如,如果我的模型具有status_id和status_name字段,则我想按status_id分组,但在分组标题中显示status_name。
我已经尝试使用 groupHeaderTpl 选项,但目前没有成功。如何实现此功能?
我已经尝试使用 groupHeaderTpl 选项,但目前没有成功。如何实现此功能?
你可以通过以下方式调试grouperHeaderTpl的值:
groupHeaderTpl:'{[console.log(values)]}'
那样你就可以观察所有可能的值,并选择正确的路径来获取你正在寻找的值。在这种情况下,你需要做的是
groupHeaderTpl: '{[values.rows[0].data.status_name]}'
这里您可以找到完整的示例
/* Sample Data */
var data = [
{ "status_id": 1, "status_name": "Pending"},
{ "status_id": 2, "status_name": "Ready"},
{ "status_id": 3, "status_name": "Processing"},
{ "status_id": 4, "status_name": "Unavailable"},
{ "status_id": 5, "status_name": "Ready"},
];
/* Model */
Ext.define("StatusModel", {
extend: 'Ext.data.Model',
fields: ['status_id', 'status_name']
});
/* Store */
Ext.create('Ext.data.Store', {
storeId:'statusStore',
model: "StatusModel",
groupField: 'status_id',
data: data,
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
/* Grouping Feature */
var groupingFeature = Ext.create('Ext.grid.feature.Grouping',{
groupHeaderTpl: '{[values.rows[0].data.status_name]}'
});
/* Grid Panel */
Ext.create('Ext.grid.Panel', {
title: 'Status',
store: Ext.getStore('statusStore'),
columns: [
{ text: 'Id', dataIndex: 'status_id' },
{ text: 'Name', dataIndex: 'status_name', flex: 1}
],
features: [groupingFeature],
renderTo: Ext.getBody()
});