首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTables插件中的列顺序不会改变

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

Stack Overflow用户
提问于 2021-08-22 22:07:27
回答 1查看 208关注 0票数 3

我想反向列从DataTables导出的数据。我寻找方法去做这件事,最后以这样的方式结束:

代码语言:javascript
复制
$(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时没有任何列。

也许它没有分配给列或类似的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-22 23:52:31

我认为最简单的方法是在导出数据时反转每个单独的行数组。您可以使用exportOptions.rows来完成此操作。

您还需要反转标头,这可以使用exportOptions.format.heeader完成。在这种情况下,一次只能访问一个标头字段,因此需要做更多的工作来构建一个反向的标头值数组,然后访问该数组中的每个索引位置:

代码语言:javascript
复制
$(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];
            }
          }
        }
      }
    ]
  } );

} );

参考文献:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68885522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档