Recalculate sum when printing to PDF or Excel
Recalculate sum when printing to PDF or Excel
ivasija
Posts: 2Questions: 2Answers: 0
Hi everyone, I have used Datatables to create a paginated Table and show sum of the current page as the footer, it is working as expected, on every page it will recalculate the sum, but the problem is when I print using PDF or Excel, the sum is same as per page, but the rows are the complete match of the search criteria. Can any of you please help me? if needed here's the jquery code of the table:
<script>
$( document ).ready(function() {
var table = $('#table').DataTable({
'initComplete': function (settings, json){
this.api().columns('6,8,7', {page:'current'}).every(function(){
var column = this;
var sum = column
.data()
.reduce(function (a, b) {
a = parseFloat(a, 10);
if(isNaN(a)){ a = 0; }
b = parseFloat(b, 10);
if(isNaN(b)){ b = 0; }
return (a + b).toFixed(2);
});
if(!sum.includes('€'))
sum +=' €';
$(column.footer()).html(sum);
});
},
footerCallback: function () {
this.api().columns('6,8,7', {page:'current'}).every(function(){
var column = this;
var sum = column
.data()
.reduce(function (a, b) {
a = parseFloat(a, 10);
if(isNaN(a)){ a = 0; }
b = parseFloat(b, 10);
if(isNaN(b)){ b = 0; }
return (a + b).toFixed(2);
});
if(!sum.includes('€'))
sum +=' €';
$(column.footer()).html(sum);
});
},
dom: 'Bfrtip',
buttons: [
{
extend: 'copyHtml5',
exportOptions: {
columns: [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
},
footer: true
},
{
extend: 'excel',
exportOptions: {
columns: [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
},
footer: true
},
{
extend: 'pdfHtml5',
exportOptions: {
columns: [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
},
footer: true
}
]
});
});
</script>
This discussion has been closed.
Answers
See this answer.