Jquery数据表 - 即使不在当前页面上也获取所有行

kra*_*626 4 jquery jquery-datatables

我正在使用JQuery的Datatables.net插件.我试图在页脚中创建一个"Totals"行.我正在使用此示例作为参考:http://datatables.net/release-datatables/examples/advanced_init/footer_callback.html

aiDisplay此示例中的数组是否提供当前显示的所有Rows索引?或者所有那些都满足当前的过滤器?

澄清这里的差异将是满足过滤器但不在当前页面上的行.可能有30行符合过滤器,但只显示其中10行,因为分页设置为10.

如果aiDisplay包含完成过滤器的所有行,无论分页如何都很棒!但是,如果它确实只包含当前页面上显示的行,有没有办法可以获得满足过滤器的所有行的数组?

谢谢!

旁白:似乎这个数组应该包含满足过滤器的所有索引,而不仅仅是页面上的索引.由于提供了iStartiEnd值,因此可以导出页面上的行,并且只提供页面上的值的数组不提供额外的值来提供满足过滤器的所有值.但是我找不到这方面的文件.

OQJ*_*QJF 6

我检查了这个功能,所以让我给你一个解释. nRow实际上并不重要.只是忽略它.在aaData包含了表中的所有数据,包括由您的过滤器排除的数据. iStart而且iEnd我想你知道.它们是要显示的行的索引.该aiDisplay实际上包含了所有的(过滤)的数据,但它的一些可能由于分页显示.您也可以使用此功能.它有自己的逻辑,你可以改变,以实现你想要的.

$('#example').dataTable({
    "fnFooterCallback": function ( nRow, aaData, iStart, iEnd, aiDisplay ) {
        /*
        * Calculate the total market share for all browsers in this table (ie inc. outside
        * the pagination)
        */
        var iTotalMarket = 0;
        for ( var i=0 ; i<aaData.length ; i++ ){
            iTotalMarket += aaData[i][4]*1;
        }

        /* Calculate the market share for browsers on this page */
        var iPageMarket = 0;
        for ( var i=iStart ; i<iEnd ; i++ ){
            iPageMarket += aaData[ aiDisplay[i] ][4]*1;
        }

        /* Modify the footer row to match what we want */
        var nCells = nRow.getElementsByTagName('th');
        nCells[1].innerHTML = parseInt(iPageMarket * 100)/100 +
                '% ('+ parseInt(iTotalMarket * 100)/100 +'% total)';
    }
});
Run Code Online (Sandbox Code Playgroud)