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 のコンテンツの更新を避けたいと思います。