groupHeaderTpl を groupingField 値に変更する必要があります。私の場合、ブール フィールドを使用してグループ化します。これどうやってするの?
groupHeaderTpl: '{name}=="true" ? Shared : Your own'
groupHeaderTpl: '[{name}=="true" ? Shared : Your own]'
以下の答えが役に立たない場合は、デバッグに使用できる手法を次に示します。
ページにデバッグ関数「objectToString」を導入します。
function ObjectToString(object) {
var string;
var name;
for (name in object) {
if (typeof object[name] !== 'function') {
string += "{\"" + name + "\": \"" + object[name] + "\"}<br />";
}
}
return string;
}
次に、この関数を使用して、values.rows [0]オブジェクトの属性をダンプし、必要な列/値がテストに使用できるかどうかを確認します。
var groupingFeature = Ext.create('Ext.grid.feature.Grouping',{
groupHeaderTpl: 'Debug: {[ObjectToString( values.rows[0] ) ]}',
hideGroupedHeader: true
});
これを使用して以下の例をデバッグすると、次のデバッグ出力を取得できます。
したがって、これから、グループ化する列の「id」プロパティを設定することで、values.rows配列で列名を使用できるようになり、その値をテストできることがわかります。
繰り返しになりますが、この手法と以下の元のサンプルが役立つことを願っています。
====コードをデバッグする前の以下の元の例====
これは、Senchaグリッドのグループ化の例から少し変更されたサンプルです。(煎茶サイト、グリッドグループ化の例を参照してください)。
var groupingFeature = Ext.create('Ext.grid.feature.Grouping',{
groupHeaderTpl: 'Cuisine: {[ values.rows[0].cuisine == "American" ? "North American" : values.rows[0].cuisine ]}',
hideGroupedHeader: true
});
var grid = Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody(),
collapsible: true,
iconCls: 'icon-grid',
frame: true,
store: Restaurants,
width: 600,
height: 400,
title: 'Restaurants',
resizable: true,
features: [groupingFeature],
columns: [{
text: 'Name',
flex: 1,
dataIndex: 'name'
},{
text: 'Cuisine',
id: 'cuisine', // NOTE: you must assign an id here
flex: 1,
dataIndex: 'cuisine'
}],
fbar : ['->', {
text:'Clear Grouping',
iconCls: 'icon-clear-group',
handler : function(){
groupingFeature.disable();
}
}]
});
覚えておくべきことは次のとおりです。
お役に立てば幸いです。
次のことを試してみてください。
groupHeaderTpl: '{[values.groupValue ? "Shared" : "Your own"]}'
これは、Ext JS 4.2 で動作します (4.1 では検証していませんが、ドキュメントには groupValue も記載されています)。
HTH