4

JQuery用のDatatables.netプラグインを使用しています。フッターに「合計」行を作成しようとしています。この例を参照として使用しています:http://datatables.net/release-datatables/examples/advanced_init/footer_callback.html

この例の配列aiDisplayは、現在表示されているすべての行インデックスを提供しますか?または、すべてのものが現在のフィルターを満たしていますか?

ここでの違いを明確にするために、フィルターを満たすが現在のページにはない行があります。フィルタを満たす行は30行ある可能性がありますが、ページ付けが10に設定されているため、これらの行のうち10行のみが表示されます。

aiDisplayページ付けに関係なく、フィルターを満たすすべての行が含まれている場合は、すばらしいです。ただし、文字通り現在のページに表示されている行のみが含まれている場合、フィルターを満たすすべての行の配列を取得する方法はありますか?

ありがとう!

余談ですが、この配列には、ページ上のインデックスだけでなく、フィルターを満たすすべてのインデックスが含まれている必要があるようです。iStartと値が提供されるためiEnd、ページ上の行を導出でき、ページ上の値のみを含む配列を提供しても、フィルターを満たすすべての値を提供する以上の追加の値は提供されません。しかし、これに関するドキュメントは見つかりませんでした。

4

1 に答える 1

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)';
    }
});
于 2013-03-27T14:39:19.383 に答える