2016-01-22 79 views
3

我想知道如何设置自定义文件名导出数据表按钮excelHtml5与选择,我做了一个函数来传递名称,但没有设置它生病发布我的js代码。提醒它反映了这些变化,但是当我调用数据表中的excel按钮时就会空着。设置自定义文件名数据表导出excelHtml5与选择文本

下面是代码:

var reportName = '24 afterhours '; 
$('#example').DataTable({ 
    dom: 'Bfrtip', 
    buttons: [ 
     { 
     extend: 'excelHtml5', 
     title: reportName 
     }, 
     { 
     extend: 'pdfHtml5', 
     title: 'Data export' 
     } 
    ] 
}); 

$('#campaing').change(function() { 
    reportName += $(this).find(":selected").text() + ' report'; 
}); 

我想我可能失去了一些东西。

回答

4

title被读取一次当dataTable被初始化时,然后该值被映射到内部config对象。因此,如果要动态更改设置,则必须更改该内部对象,而不要尝试更改只读配置设置。

所以做的其他方式 - 创建的<select>事件侦听器内按钮init()回调本身。如果你有一个可选的文件名,这样

<select id="filename"> 
    <option value="filenameA">filename A</option> 
    <option value="filenameB">filename B</option> 
    <option value="filenameC">filename C</option> 
</select> 

一个<select>然后你就可以通过

buttons : [ 
    { 
    extend: 'excelHtml5', 
    title: 'filenameA', //default filename 
    init: function(dt, node, config) { 
     $("#filename").on('change', function() { 
      config.title = this.value; 
     }) 
    } 
}, 

动态改变出口fileName(== title + extension)您可以从内部改变其他配置属性处理程序也是如此,例如,您可能需要将config.extension更改为其他内容。


这里是一个演示 - >https://jsfiddle.net/y8d9zhfv/ 强调这一点很重要,即dataTables.buttons.js 1.3.0或更高是必需的; buttons.html5.js模块也是如此。所以如果上述不工作升级 - >https://cdn.datatables.net/buttons/

+0

它的工作就像一个魅力,感谢您的建议。 – Cobol