2013-02-09 14 views
7

私はExt.grid.Panelを持っていますが、フィールドでグループ化したいのですが、グループ化ヘッダーには別のフィールドを表示したいと思います。たとえば、モデルにstatus_idstatus_nameのフィールドがある場合は、status_idでグループ化しますが、グループヘッダーにはstatus_nameと表示されます。Extグリッドグループヘッダに別のフィールドの値を表示する方法は?

私はgroupHeaderTplオプションで遊んできましたが、これまでのところ運がありませんでした。これはどうすればできますか?

答えて

16

あなたがすべてのかのう値を観察し、あなたが探している値を取得するために正しいパスを選択することができますこの方法

groupHeaderTpl:'{[console.log(values)]}' 

を行うことによってgrouperHeaderTpl値をデバッグすることができます。この場合、あなたは何をする必要があるか、私は私がデータにそのようにアクセスしてはならないと思ったのにここでは、

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

http://jsfiddle.net/alexrom7/shZLf/1/

+0

素敵なソリューションを全例を見つけることができます

groupHeaderTpl: '{[values.rows[0].data.status_name]}' 

です。 –

関連する問題