Javascript 为什么在datatables中使用drawcallback时,在显示所有条目时它不起作用?
我使用drawcallback对数据表的页脚进行分组和显示小计。它正在工作,但不是我想要的。当我将“长度”菜单更改为“全部”时,它仍然会显示结果,就好像我选择显示100行一样。我不知道如何修复它,我想在同一页中显示900行和小计。我Javascript 为什么在datatables中使用drawcallback时,在显示所有条目时它不起作用?,javascript,datatables,Javascript,Datatables,我使用drawcallback对数据表的页脚进行分组和显示小计。它正在工作,但不是我想要的。当我将“长度”菜单更改为“全部”时,它仍然会显示结果,就好像我选择显示100行一样。我不知道如何修复它,我想在同一页中显示900行和小计。我 "columnDefs": [{ "visible": false, "targets": 4 }], "order": [
"columnDefs": [{
"visible": false,
"targets": 4
}],
"order": [
[2, 'asc']
],
"displayLength": 25,
"drawCallback": function (settings) {
var api = this.api();
var rows = api.rows({
page: 'all'
}).nodes();
var last = null;
// Remove the formatting to get integer data for summation
var intVal = function (i) {
return typeof i === 'string' ?
//g global modifier aca cambia el signo peso las barras en cada numero que se suma
i.replace(/[\$,]/g, '.') * 1 :
typeof i === 'number' ?
i : 0;
};
var groupTotal = {};
api.column(0, {
page: 'all'
}).data().each(function (group, i) {
group_assoc = group.replace(' ', "_");
//console.log(group_assoc);
if (typeof groupTotal[group_assoc] != 'undefined') {
groupTotal[group_assoc] = groupTotal[group_assoc] + intVal(api.column(8).data()[i]);
} else {
groupTotal[group_assoc] = intVal(api.column(8).data()[i]);
}
if (last !== group) {
$(rows).eq(i).before(
'<tr class="group"><td colspan="7">' + group + '</td><td class="' + group_assoc + '"></td></tr>'
);
last = group;
}
});
var footerText = [];
var footerTotal = [];
for (var key in groupTotal) {
$("." + key).html("$" + groupTotal[key].toFixed(1));
footerText.push(key); // Get array of group names
footerTotal.push("$" + groupTotal[key].toFixed(1)); // Get array of group totals
}
// Update footer with group names, each on a newline
$(api.column(7).footer()).html(
footerText.join('<br>')
);
// Update footer with group totals, each on a newline
$(api.column(8).footer()).html(
footerTotal.join('<br>')
); ```
“columnDefs”:[{
“可见”:假,
“目标”:4
}],
“命令”:[
[2,‘asc’]
],
“显示长度”:25,
“drawCallback”:函数(设置){
var api=this.api();
var rows=api.rows({
页面:“全部”
}).nodes();
var last=null;
//删除格式以获取求和的整数数据
var intVal=函数(i){
返回类型i==='string'?
//g全局修改器aca cambia el signo peso las barras en cada numero que se suma
i、 替换(/[\$,]/g,'.')*1:
i的类型=='编号'?
i:0;
};
var groupTotal={};
api.列(0{
页面:“全部”
}).data().each(函数组,i){
组关联=组。替换(“”,”);
//控制台日志(组助理);
if(groupTotal[group_assoc]的类型!=“未定义”){
groupTotal[group_assoc]=groupTotal[group_assoc]+intVal(api.column(8.data)([i]);
}否则{
groupTotal[group_assoc]=intVal(api.column(8.data()[i]);
}
如果(最后!==组){
$(行).eq(i).之前(
''+组+''
);
last=组;
}
});
var footerText=[];
var footerTotal=[];
for(groupTotal中的var键){
$(“+”键).html(“$”+groupTotal[key].toFixed(1));
footerText.push(key);//获取组名数组
footeTotal.push(“$”+groupTotal[key].toFixed(1));//获取组总计数组
}
//使用组名更新页脚,每个组名位于换行符上
$(api.column(7.footer()).html(
footerText.join(“
”)
);
//使用组总计更新页脚,每行换行
$(api.column(8.footer()).html(
footerTotal.join(“
”)
); ```