我正在尝试使用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。正如你所看到的,除了总行数之外,一切都正常工作
答案 0 :(得分:0)
您需要更改表格的tfoot
部分,并分别添加一个tr
和th
,以便像这样获得小计和总计。
<tfoot><tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></tfoot>
您还交换了小计和总计计算。
在总计计算中,您使用了page: current
,该值应用于总计计算。
更正了脚本,新的小提琴是here