我想反转从 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 时 PDF 没有任何列。
也许它没有分配给列或类似的东西。
最佳答案
我认为最简单的方法是在导出数据时反转每个单独的行数组。您可以使用 exportOptions.rows
来执行此操作。
您还需要反转 header ,这可以使用 exportOptions.format.heeader
来完成。在这种情况下,您一次只能访问一个 header 字段,因此需要做更多的工作来构建 header 值的反向数组,然后访问该数组中的每个索引位置:
$(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];
}
}
}
}
]
} );
} );
引用资料:
关于javascript - DataTables 插件中的列顺序不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68885522/