1

DataTable が有効なテーブルを使用して単純なページを作成しています。

サーバーからのデータは次のようになります。

[{"name": "John","salary": 2000,"bonus1": 100,"bonus2": 100},
 {"name": "Jack","salary": 2500,"bonus1":   0,"bonus2": 200},
 {"name": "Bill","salary": 2000,"bonus1": 300,"bonus2": 300}
]

従業員の給与のパーセンテージ値 (給与/すべての給与の合計) を表す 5 番目の列を追加して計算する必要があります。

fnPreDrawCallback変更できるoSettings.aoDataので、変更するconsole.log(oSettings.aoData)と正しい値が得られますが、テーブルにはその列が空です。

私のfnPreDrawCallback関数は次のようになります。

"fnPreDrawCallback": function (oSettings) {
          iTotal = [0, 0, 0]; //declared in $(document).ready
          var dataLength=oSettings.aoData.length;
            for (var i = 0; i < dataLength; i++) {
                iTotal[0] += oSettings.aoData[i]._aData.salary;
                iTotal[1] += oSettings.aoData[i]._aData.bonus1;
                iTotal[2] += oSettings.aoData[i]._aData.bonus2;
            }

          for (i = 0; i < dataLength; i++) {
                oSettings.aoData[i]._aData.percent=(oSettings.aoData[i]._aData.salary / iTotal[0] * 100).toFixed(2)+'%';

            }
          console.log(oSettings.aoData);
        },

これが私のコードです: http://live.datatables.net/umezez/13/edit

私の質問:テーブルに更新が表示されるようにするには、どこでデータを更新する必要がありますか?

TableTools またはサーバー側の処理を使用してテーブルをエクスポートできるようにしたいので、セレクターの使用と DOM のコンテンツの更新を避けたいと思います。

4

3 に答える 3

1

aoData を更新して(エクスポートできるように)、自分で html を更新して(正しく表示されるように)、単純に両方を実行しない理由がわかりません。

私はそれがハックであることを知っていますが、うまくいくはずです:)

http://live.datatables.net/umezez/16/edit

fnUpdate() を使用して編集する

http://live.datatables.net/umezez/23/edit

于 2012-10-08T22:28:06.147 に答える
0

これが答えです

http://live.datatables.net/umezez/19

基本的に、最初に給与の合計を計算する必要があります (データを変数に移動し、テーブルがレンダリングされる前に合計を計算します)。その後、% 列で fnRender 関数を使用して、このようなパーセンテージを計算して表示する必要があります (以下は % の列定義です)

 {
            "sTitle": "%",
            "bVisible": true,
            "sType": "string",
            "sWidth": "50px",
            "sClass": "center percent",
            "mData": "percent",
          "fnRender": function(o) {return o.aData.salary/totalSalaries}
        }
于 2012-10-09T21:37:58.250 に答える
0

リンクの下のDataTablesフッターコールバックチェックを使用できます http://www.datatables.net/examples/advanced_init/footer_callback.html

この議論もチェックして ください http://www.datatables.net/forums/discussion/3605/addition-or-sum-of-column-values/p1

于 2012-10-01T08:19:52.550 に答える