0

groupHeaderTpl を groupingField 値に変更する必要があります。私の場合、ブール フィールドを使用してグループ化します。これどうやってするの?

groupHeaderTpl: '{name}=="true" ? Shared : Your own'

groupHeaderTpl: '[{name}=="true" ? Shared : Your own]'
4

2 に答える 2

3

以下の答えが役に立たない場合は、デバッグに使用できる手法を次に示します。

ページにデバッグ関数「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();
        }
    }]
});

覚えておくべきことは次のとおりです。

  1. 列定義で「id」属性を設定しないと、groupHeaderTplでそれらの列を参照できなくなります。
  2. groupHeaderTplで{[...]}を使用して、任意のjavascriptを実行し、チェックを実行します
  3. value.rows [0] .FIELDNAMEを使用して、グループの最初の行から必要な列の値を引き出します

お役に立てば幸いです。

于 2012-08-23T18:45:57.330 に答える
1

次のことを試してみてください。

groupHeaderTpl: '{[values.groupValue ? "Shared" : "Your own"]}'

これは、Ext JS 4.2 で動作します (4.1 では検証していませんが、ドキュメントには groupValue も記載されています)。

HTH

于 2013-09-28T21:10:07.507 に答える