2017-07-18 1 views
0

J'essaie d'exporter uniquement les lignes sélectionnées à partir d'un DataTable. Je pourrais exporter avec succès les lignes sélectionnées dans un fichier csv en définissant l'option extend à csv comme indiqué dans le code ci-dessous.Exportation de lignes sélectionnées avec la collection de boutons ne fonctionnant pas dans dataTables

buttons: [ 
    'colvis', 
    'selectAll', 
    'selectNone', 
    { 
     extend: 'csv', 
     text: 'Export Selected', 
     exportOptions: { 
      columns: ':visible:not(.not-exported)', 
      modifier: { 
       selected: true 
      } 
     }, 
     title: 'Data export' 
    } 
], 

Mais je veux avoir un menu déroulant (csv, copier, imprimer) à partir de laquelle je peux choisir d'exporter les lignes à selcted. J'ai essayé d'utiliser la collection comme dans le code ci-dessous. Mais il exporte toutes les lignes visibles. Quelqu'un pls aider

buttons: [ 
    'colvis', 
    'selectAll', 
    'selectNone', 
    { 
     extend: 'collection', 
     text: 'Export Selected', 
     buttons: ['copy','csv','print'], 
     exportOptions: { 
      columns: ':visible:not(.not-exported)', 
      modifier: { 
       selected: true 
      } 
     }, 
     title: 'Data export' 
    } 
], 

Répondre

3

Vous définissez "sélectionnés" en utilisant simplement rows: '.selected'. Cependant: Même si vous utilisez une collection, vous devrez toujours fournir des paramètres pour chaque bouton. -À-dire

buttons: ['copy','csv','print'], 

devrait être

buttons: [ 
    { extend :'copy', 
    exportOptions : { 
    columns: ':visible:not(.not-exported)', 
    rows: '.selected' 
    } 
    ... 
] 

Vous pouvez réduire la quantité de code en réutilisant un littéral simple

var exportOptions = { 
    columns: ':visible:not(.not-exported)', 
    rows: '.selected' 
} 

L'exemple de code de travail va finir comme ceci:

buttons: [ 
    'colvis', 
    'selectAll', 
    'selectNone', 
    { 
    extend: 'collection', 
    text: 'Export Selected', 
    buttons: [ 
     { extend : 'copy', 
     exportOptions: exportOptions 
     }, 
     { extend : 'csv', 
     exportOptions: exportOptions 
     }, 
     { extend : 'print', 
     exportOptions: exportOptions 
     } 
    ] 
    } 
] 

voici une démo ->https://jsfiddle.net/youn7zm4/