提问者:小点点

数据表自动设置导出标题


我得到了以下.js文件,它在我的网站的每个页面上都被调用,并且自动将表转换为DataTables:

$.extend( $.fn.dataTable.defaults, {
    "buttons": [
        $.extend( true, {}, buttonCommon, {
            extend: 'excelHtml5',
            exportOptions: {
                columns: ':visible'
            }
        } ),
        $.extend( true, {}, buttonCommon, {
            extend: 'pdfHtml5',
            orientation: 'landscape',
            exportOptions: {
                columns: ':visible'
            }
        } ),
        $.extend( true, {}, buttonCommon, {
            extend: 'print',
            exportOptions: {
                columns: ':visible'
            },
            orientation: 'landscape'
        } )
    ]
} );

//Render datatables
$(document).ready(function() {
    if ($('.data-table').length !== 0)
    {
        $('.data-table').DataTable();
    }
});

当我导出一个表(即excelHtml5、pdfHtml5或print)时,我希望导出的文档标题显示该表的data-exporttitle属性(如果该表具有该属性),否则显示默认值。当前和默认情况下,标题显示页面标题。

如何修改上面的脚本才能做到这一点呢?

如果这个信息有任何帮助,我的网站上的一些页面包含一个以上的表。

我的第一反应是在每个extend函数中添加以下“title”代码行,但这不起作用:

$.extend( true, {}, buttonCommon, {
    extend: 'pdfHtml5',
    orientation: 'landscape',
    title: $(this).data("export-title")
} ),

共1个答案

匿名用户

您可以在buttoncommon文字中使用buttons.init。表引用稍微隐藏在参数中,但它可以工作:

var buttonCommon = {
  init: function(dt, node, config) {
    var table = dt.table().context[0].nTable;
    if (table) config.title = $(table).data('export-title')
  },
  title: 'default title'
};

现在,按钮导出将具有与其关联的tabledata-export-title属性相同的title

用法

演示https://jsfidle.net/d72vmj2h/1/