diff --git a/Js/fonctions.js b/Js/fonctions.js index 042032e0..d53c5aec 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -47548,31 +47548,32 @@ function afficheDonneesTableChoisie(fichier) { type: 'post', data: donnees, success: function(data) { - // 1. On injecte le HTML qui contient le nouveau tableau et potentiellement les nouveaux filtres + // 1. Injection du HTML $divLister.html(data); // 2. Traitement spécifique Jours Fériés if (fichier === "Ajaxtblisterjoursferiers") { - // A. On ré-habille le SelectPicker AVANT de lui donner une valeur - if (typeof actualiserSelectPicker === "function") { - actualiserSelectPicker('#codePays', false); + // --- SÉCURITÉ ANTI-DOUBLON --- + // On vérifie si l'élément est déjà un selectpicker, si oui on le détruit proprement + if ($('#codePays').data('selectpicker')) { + $('#codePays').selectpicker('destroy'); } + // On supprime physiquement le conteneur généré par Bootstrap-Select s'il existe + $('#codePays').siblings('.bootstrap-select').remove(); + + // Maintenant on peut le ré-initialiser proprement + actualiserSelectPicker('#codePays', false); - // B. On force la valeur et on demande au plugin de se rafraîchir visuellement - // C'est le .selectpicker('refresh') qui garantit que le pays choisi reste affiché + // On applique la valeur ET on rafraîchit $('#codePays').val(donnees.codePays).selectpicker('refresh'); $('#annee').val(donnees.annee); } - // 3. Initialisation de la DataTable - // Elle va maintenant lire les valeurs correctes dans les champs pour filtrer si besoin + // 3. DataTable const nomTableRaw = $("#listetables option:selected").text() || 'Export'; const nomTableClean = nomTableRaw.trim().replace(/[^a-z0-9]/gi, '_'); - - if (typeof initDataTableReference === "function") { - initDataTableReference('#tableLister', 'Referentiel_' + nomTableClean); - } + initDataTableReference('#tableLister', 'Referentiel_' + nomTableClean); }, error: function(xhr) { toastr.error((codeLangue === "en_US") ? "Data loading error" : "Erreur de chargement des données");