在jQuery DataTables中使用fnFooterCallback添加第二个总行

时间:2014-05-25 06:45:07

标签: jquery mysql datatables

我有以下页脚表:

<tfoot>
    <tr>
        <th colspan="9">Total amount:</th> 
        <th></th>
        <th></th>
    </tr>
    <tr>
        <th colspan="9">Grand total:</th> 
        <th colspan="2"></th>
    </tr>                                    
</tfoot>  

我正在使用jQuery DataTable从mySQL渲染数据,我使用第一个页脚行来从两列中的表中取代值,让我们说Amount和SAmount

"fnFooterCallback": function ( nRow, aaData, iStart, iEnd, aiDisplay ) {
    var nCells = nRow.getElementsByTagName('th');
    nCells[0].innerHTML = Amount;

    var nCells = nRow.getElementsByTagName('th');
    nCells[1].innerHTML = SAmount;
});

在第二个页脚行中,我想插入总金额和SAmount之间的差异。 如何在第二个页脚行中插入差异总行?

4 个答案:

答案 0 :(得分:0)

我自己找到了

var secondRow = $(nRow).next()[0]; 
var nCells = secondRow.getElementsByTagName('td'); 

答案 1 :(得分:0)

感谢您提供的信息。如果要将第三个页脚行添加到数据表中,则可以使用以下命令:

var thirdRow = $($(nRow).next()[0])。next()[0]; var nCells = thirdRow.getElementsByTagName('th');

答案 2 :(得分:0)

如果你想使用插件导出它只会导出页脚的第一行,为了解决这个问题,你可以修改browser.b(index: 4)中的函数_fnGetDataTablesData,用这个新代码更改页脚部分:

dataTables.tableTools.js

答案 3 :(得分:0)

如果表格页脚中有任何colspans,Ernesto Ramos的答案会抛出错误(是的,我知道数据表不支持colspans)。 Tabletools通过清除数据来处理错误,因此文件完全为空。

下面的解决方案与上面的解决方案非常相似,但允许使用colspans。

if (oConfig.bFooter && dt.nTFoot !== null) {
    var numRows = dt.nTFoot.rows.length;

    for (j = 0; j < numRows; j++) {
        aRow = [];
        for (i = 0, iLen = dt.aoColumns.length ; i < iLen ; i++) {
            if (aColumnsInc[i] && dt.nTFoot.rows[j].cells[i] && dt.aoColumns[i].nTf !== null) {
                sLoopData = dt.nTFoot.rows[j].cells[i].innerHTML.replace(/\n/g, " ").replace(/<.*?>/g, "");
                sLoopData = this._fnHtmlDecode(sLoopData);
                aRow.push(this._fnBoundData(sLoopData, oConfig.sFieldBoundary, regex));
            }
        }

        aData.push(aRow.join(oConfig.sFieldSeperator));
    }
}