2

slickgrid では、アグリゲーターの合計を入れました。その列(パーセント)のすべての行を合計し、正常に機能します。しかし今、私はアクティブなパーセントからの合計のみを取得したいということに直面しています。アクティブな列は、0 または 1 を含む他の列です。

列の定義:

{id: "percent", name: "Percent", field: "percent", minWidth: 60, sortable: true, groupTotalsFormatter: sumTotalsFormatter, editor: Slick.Editors.Text}

function sumTotalsFormatter(totals, columnDef, id) 
{
  return "Total: " + Math.round(totals.sum[columnDef.field]) + "%";
}

アグリゲーター:

  dataView.setAggregators([
    new Slick.Data.Aggregators.Avg("percent"),
    new Slick.Data.Aggregators.Sum("percent")
  ], false);

私はさまざまな方法を試してきましたが、成功しませんでした(アクティブなデータのみを保存するために非表示の2番目のフィールドを配置し、アグリゲーターを変更する方法を検索しています..など)。何か案が?

4

1 に答える 1

1

(質問の編集で回答。コミュニティ wiki の回答に変換。質問への回答が質問自体に追加された場合の適切なアクションは何ですか? を参照してください。 )

OP は次のように書いています。

さて、Firebugでのクロールと再テストを数回解決しました。これが私の解決策です:

function sumTotalsFormatter(totals, columnDef) 
{
  var suma      = 0;
  //current group...
  var groupo    = totals.group.value;
  for (var i=0; i<data.length; i++)
  {
    if(data[i].active == '1')
    {
//data[i].us is the one who makes the groups...
        if(groupo == 1 && data[i].us == '1')
        {
            suma += parseInt(data[i].percent);
        }
        else if(groupo == 0 && data[i].us == '0')
        {
            suma += parseInt(data[i].percent);
        }
    }   
  }
  return "Total: " + suma + "%"; 
}
于 2015-02-07T22:13:01.000 に答える