我正在尝试实现footerCallback
以查找分页数据表的其中一列中所有元素的总和。当我尝试计算所有页面中的总金额时,仅计算当前页面中的行总和。我的footerCallback代码如下:
"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
total = api
.column( 5 )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Total over this page
pageTotal = api
.column( 5, { page: 'current'} )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
// Update footer
jQuery( api.column( 5 ).footer() ).html(
'$'+pageTotal +' ( $'+ total +' total)'
);
}
此函数在ajax调用中与columns和columndef一起提供。 pageTotal和total都返回相同的值。当我在控制台中尝试table.column( "#header5" ).data();
命令时,即使它只返回当前页面中的数据。在其中一个网站中,我读到,当服务器端为真时,data()
和fnGetData()
仅返回当前页面中的数据。真的吗?如果是,我如何在其他页面中获取数据?
答案 0 :(得分:0)
是的,那是真的。如果将服务器端选项设置为true,则数据表期望您在服务器上执行分页处理(即,数据表请求将询问数据集的给定页面,并且您的服务器必须准备好返回结果查询给定页面)。如果您不处理大量数据并希望避免自己进行分页,则最好将serverside选项设置为false,数据表将处理它。这样您只需一次提供所有数据即可。 更多信息:https://datatables.net/examples/data_sources/server_side.html