如何使用DataTables" jQuery插件向我的表添加小计和大写?"

时间:2016-03-08 22:04:30

标签: javascript jquery html datatable datatables

我正在尝试使用Datatables插件来显示报告的数据。

我喜欢在我的表格中添加2页脚行,第一行是从当前页面添加小计"总计"和Granttotal的另一行"来自所有页面的总计"

我在文档中跟随此example尝试添加行,但由于某种原因,页脚没有显示。

在启动DataTable后,我使用Ajax请求动态填充数据表。以下是我目前的代码。

这是我的Html标记

<table id="reportTable" class="table table-striped " cellspacing="0" style="width: 100%;">
    <thead></thead>
    <tbody></tbody>
    <tfoot></tfoot>
</table>

这是我的JavaScript代码

$(function(e) {

    $(window).load(function (e) {

        $('#reportTable').DataTable({
            pageLength: 50,
            lengthMenu: [10, 25, 50, 75, 100, 250, 500, 1000],
            order: [   [ 2, 'desc' ]  ],
            columns: [
                { data: 'chain_name', title: 'Chain Name', width: '20%'},
                { data: 'store_id' , title: 'Store Number' },
                { data: 'completed', title: 'Total Completed' },
                { data: 'initial_quota', title: 'Target To Complete' },
                { data: 'total_callable', title: 'Total In Queue' },
                { data: 'current_status', title: 'Current Status' },
                { data: 'wgtstamp', title: 'Weight' }
            ]
            ,
            footerCallback: function (row, data, start, end, display) {
                var api = this.api(), data, ;

                // Remove the formatting to get integer data for summation
                var intVal = function (i) {
                    return typeof i === 'string' ?
                        i.replace(/[\$,]/g, '') * 1 :
                        typeof i === 'number' ?
                        i : 0;
                };

                // Total over all pages
                var completedSubTotal = api
                    .column(2)
                    .data()
                    .reduce(function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0);

                // Total over this page
                var completedGrandTotal = api
                    .column(2, { page: 'current' })
                    .data()
                    .reduce(function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0);

                // Update footer with a subtotal
                $(api.column(2).footer()).html(completedSubTotal);

                // Update footer with a grand total
                $(api.column(2).footer()).html(completedGrandTotal);
            }


        });
    });


    $('input:search').on('keyup', function () {
        $('#reportTable').DataTable().search(this.value).draw();
    });

    $('#CampaignMenu').change(function(e) {

        $('#reportTable').DataTable().clear().draw();
        var campId = $(this).val();

        if (campId != '0') {

            $.ajax({
                type: 'POST',
                url: '@Url.RouteUrl("AccountQuotaDashboard.GetReportData")',
                data: { 'campaign_id': campId },
                dataType: 'json',
                success: function (json) {

                    if (json && !$.isEmptyObject(json)) {

                        var table = $('#reportTable').dataTable().fnAddData(json);

                    }

                }
            });

        }

    });

});

如何正确地将2页脚行添加到数据表中?

已更新

我创建了一个filddle来向您显示操作中的代码http://live.datatables.net/yubuyewi/2。正如你所看到的,除了总行数之外,一切都正常工作

1 个答案:

答案 0 :(得分:0)

您需要更改表格的tfoot部分,并分别添加一个trth,以便像这样获得小计和总计。

  

<tfoot><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></tfoot>

您还交换了小计和总计计算。

在总计计算中,您使用了page: current,该值应用于总计计算。

更正了脚本,新的小提琴是here