Je me demande comment définir un nom de fichier personnalisé pour exporter dans des boutons datatables excelHtml5 avec une sélection, j’ai fait une fonction pour transmettre le nom mais ne le met pas mal poster mon code js. avec l’alerte, il reflète les changements, mais lorsque j’appelle le bouton Excel dans Datatables, il devient vide.
Voici le code:
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'; });
Je pense que je pourrais manquer quelque chose.
title
est lu une fois lorsque le dataTable est initialisé, puis la valeur est mappée dans l’object config
interne. Par conséquent, si vous souhaitez modifier les parameters de manière dynamic, vous devez modifier cet object de config
interne et ne pas tenter de modifier les parameters de configuration en lecture seule.
Donc, faites l’inverse – créez un écouteur d’événement pour le à l’ intérieur des boutons
init()
. Si vous avez un avec des noms de fichiers optionnels comme ceci
Ensuite, vous pouvez modifier dynamicment le nom de fileName
exportation (== title
+ extension
) en
buttons : [ { extend: 'excelHtml5', title: 'filenameA', //default filename init: function(dt, node, config) { $("#filename").on('change', function() { config.title = this.value; }) } },
Vous pouvez également modifier les autres propriétés de configuration à partir du gestionnaire. Par exemple, vous pouvez modifier le config.extension
.
Voici une démo -> https://jsfiddle.net/y8d9zhfv/ Il est important de souligner que dataTables.buttons.js 1.3.0 ou supérieur est requirejs; c’est également le cas avec le module buttons.html5.js. Donc si la mise à niveau ci-dessus ne fonctionne pas -> https://cdn.datatables.net/buttons/