1

「fnFooterCallback」を使用してフッターに配置された Totals 列の合計を取得しようとしていますが、運が悪く、「Datatable を再初期化できません」という警告が引き続き表示されます。

ここに私のHTMLコードがあります:

        <table id="hours" border="1" class="display dataTable">
            <thead>
                <tr>
                    <th>
                        Order Number
                    </th>
                    <th>
                        Machine
                    </th>
                    <th>
                        Start
                    </th>
                    <th>
                        Stop
                    </th>
                    <th>
                        Total
                    </th>
                    <th>
                        Edit
                    </th>
                </tr>
            </thead>
            <tbody>                    
            </tbody>   
            <tfoot>
                <tr>
                    <th>
                        Total:
                    </th>
                </tr>
            </tfoot>
        </table>

私のjQueryコード:

for (var i = 0; i < item.length; i++) {
    // add the data to the tbody
    var oTable = $("#hours").dataTable().fnAddData([
                                    item[i].OrderNumber,
                                    item[i].MachineName,
                                    item[i].startTime,
                                    item[i].stopTime,
                                    item[i].totalTime,
                                    item[i].editButton
                                ]);

}
// after the data is added, get the total of the Totals Column
oTable = $("#hours").dataTable(  
    {
        "fnFooterCallback": function (nRow, aaData, iStart, iEnd, aiDisplay) {
                 var total = 0;
                        for (var i = 0; i < aaData.length; i++) {
                            total += aaData[i][4] * 1;
                        }

                        var page = 0;
                        for (var i = iStart; i < iEnd; i++) {
                            page += aaData[aiDisplay[i]][4] * 1;
                        }

                        /* Modify the footer row to match what we want */
                        var nCells = nRow.getElementsByTagName('th');
                        nCells[1].innerHTML = parseInt(page);
        }
        });

dataTable への 2 番目の呼び出しを作成することが問題であることはわかっていますが、dnAddData を使用してデータを追加した後、「fnFooterCallback」を呼び出す方法が他にわかりません。

4

2 に答える 2

0

コールバックを使用しfnCreateRowて、合計をパブリック変数に保持します。

"fnCreatedRow": function( nRow, aData, iDisplayIndex ) {
}

ただし、テーブルに追加するのではなく、「アイテム」をデータ ソースとして使用しないのはなぜですか。テーブルを 2 回初期化しようとしています。

$("#hours").dataTable();
oTable = $("#hours").dataTable({});
于 2013-07-30T15:57:35.377 に答える