我想反向列从DataTables导出的数据。我寻找方法去做这件事,最后以这样的方式结束:
$(document).ready(function(){
var arrayCol = new Array();
var table = $('#example').DataTable({
dom: 'Bfrtip',
initComplete:function ( ) {
var len = this.api().columns().count();
var array = Array.from(Array(len).keys())
arrayCol = array.reverse();
},
buttons: [
{
extend: 'excelHtml5',
exportOptions: {
columns: ':visible:not(.not-export-col)',
orthogonal: 'export'
}
},
{
extend: 'pdfHtml5',
orientation: 'landscape',
pageSize: 'A4',
exportOptions: {
columns: arrayCol, // this doesn't work
//columns:[5,4,3,2,1,0], //this work
orthogonal: 'export'
}
}
]
});
});调试时的var arrayCol有值,但导出到PDF时没有任何列。
也许它没有分配给列或类似的东西。
发布于 2021-08-22 23:52:31
我认为最简单的方法是在导出数据时反转每个单独的行数组。您可以使用exportOptions.rows来完成此操作。
您还需要反转标头,这可以使用exportOptions.format.heeader完成。在这种情况下,一次只能访问一个标头字段,因此需要做更多的工作来构建一个反向的标头值数组,然后访问该数组中的每个索引位置:
$(document).ready(function() {
var table = $('#example').DataTable( {
dom: 'Bfrtip',
buttons: [
{
extend: 'pdf',
text: 'To PDF',
exportOptions: {
rows: function ( idx, data, node ) {
return data.reverse();
},
format: {
header: function ( data, idx, node ) {
var headers = $('#example').DataTable().table().header();
var reversedHeaders = headers.innerText.split('\t').reverse();
return reversedHeaders[idx];
}
}
}
}
]
} );
} );参考文献:
https://stackoverflow.com/questions/68885522
复制相似问题