【问题标题】:DataTables automatically set export titleDataTables 自动设置导出标题
【发布时间】:2017-08-16 15:25:15
【问题描述】:

我得到了以下 .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 或打印)时,如果表格具有此类属性,我希望导出文档的标题显示表格的 data-exporttitle 属性,否则显示默认值价值。目前和默认情况下,标题显示页眉标题。

如何修改上述脚本以实现此目的?

如果此信息有帮助,我网站上的某些页面包含多个表格。

我的第一个反应是在每个扩展函数中添加以下“标题”行代码,但它不起作用:

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

【问题讨论】:

    标签: jquery datatables


    【解决方案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'
    };
    

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


    使用<table id="example" data-export-title="test">

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

    【讨论】:

    • 我尝试了代码,但它不起作用。我一直将“默认标题”视为导出的文档标题。似乎 this.title 并没有改变 title 属性。如何解决?
    • @AdamStrudwick 查看更新,添加了一个工作小提琴。确保您有 data-export-title 属性并使用最新版本的按钮库。
    • 我试过你的小提琴并在单击 pdf 和打印时看到“默认标题”作为标题。我用谷歌浏览器和火狐都试过了。难道我做错了什么?这可能是函数中的范围问题吗?
    • @AdamStrudwick,很有趣。在我的 ubuntu chromium 上它可以工作,在带有 chrome 的 macbook 上尝试过,标题永远不会更新。我将研究为什么会发生这种情况。很奇怪,其实。因为this 的处理方式不同。
    • @AdamStrudwick 知道了:改为设置 config title。理想情况下也是“正确”的方法。它解决了mac chrome上的问题。顺便说一句,您还应该定义文件名,以避免导出与标题同名。已更新小提琴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2017-05-11
    相关资源
    最近更新 更多