javascript - DataTables 插件中的列顺序不会改变

标签 javascript datatables

我想反转从 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/

相关文章:

javascript - 在没有 id 的标签内重命名类

jquery - 如何禁用 iframe 中的文本框

javascript - 按键 - 转义不起作用

javascript - 菜单关闭 Canvas 错误移动

jquery - 对数据表下拉过滤器进行排序

jquery - 使用数据表自动导出到 Excel

javascript - 单击 asp :button in the same row? 时如何将 gridview 复选框设置为选中

javascript - 如何使用 javascript 源动态隐藏或显示使用 javascript 中的数据表创建的表列?

jquery - 数据表标题已移动

javascript - jQuery DataTables 复选框扩展无法在 IE 浏览器中正确检索所选数据