4

グリッドフッターに合計行を追加したい。レコードがストアで入手できる合計行があります。グリッドでユーザーが降順を選択すると、合計行が最初の行として表示されます。これを回避する方法を誰か教えてもらえますか?

私は完全な問題を説明します:

たとえば、Target Target1 Target2 が Web サービスから取得されているようなグリッド ビューがあります。

 Month Target  Target1  Target2   Target(2-1)  Target%
  jan    500     1000    1001        1           0.99
  feb    600     2000    2001        1           0.99

  **total  1100     3000    3002        2          2*3002/100** need to calculate total% like this   

ストア内の値 Target(2-1) Target% 合計値を計算し、ストアをグリッドにバインドします。したがって、合計列のみも変更されます。グリッドでユーザーが降順を選択すると、合計行も変更されます。これを回避する方法を誰か教えてもらえますか?

ありがとう

4

1 に答える 1

8

通常の行ではなく、グリッドの集計機能を使用する必要があります。これは、あなたの例と、Target% 合計の計算を実装するカスタム summaryType 関数の使用法を示すフィドルです

これは、集計計算をストア内のレコードとして実行するよりも優れた方法です。並べ替えやフィルタリングで問題が発生することはありません。

ドキュメントと実際の例については、こちらをご覧ください。基本的に、次のように機能をグリッドに追加する必要があります。

Ext.create('Ext.grid.Panel', {
    ...
    features: [{
        ftype: 'summary'
    }],
    ...

そして、次のように、必要な列に summaryType 構成を追加します。

columns: [{
    dataIndex: 'name',
    text: 'Name',
    summaryType: 'sum',
...

カスタムの summaryType は次のようになります。

dataIndex: 'targetPercent',
text: 'Target%',
summaryType: function(records){
    var totals = records.reduce(function(sums, record){
        return [sums[0] + record.data.target2, 
                sums[1] + record.data.targetDiff];
    }, [0,0]);

    return (totals[0] * totals[1]) / 100;
} 
于 2013-05-14T17:21:46.180 に答える