2015-01-27 2 views
0

Я использую bootstrap datatables с расширением инструмента экспорта, который отлично работает. Единственная проблема заключается в том, что у меня есть отдельные раскрывающийся список фильтров столбцов в нижнем колонтитуле таблицы, из-за которых фильтры столбцов внизу также включены в экспортированный PDF/CSV.Bootstrap datatables -Data Exporting Issues

Ниже, как инициализируется мой DataTable:

var table = $('#example').DataTable(
        { 
       "dom": 'T<"clear">lfrtip', 
       "tableTools": { 
        "oFeatures": { 
      "bCsv": false, 
      "bXls": false, 
      "bCopy": false, 
      "bPrint": false 
     }, 

        "sSwfPath": "/swf/copy_csv_xls_pdf.swf", 
      "aButtons": [ 
       {'sExtends':'pdf', 
        "oSelectorOpts": { filter: 'applied', order: 'current' }, 
       } 
       {'sExtends':'print', 
        "oSelectorOpts": { filter: 'applied', order: 'current' }, 
       } 
       ] 
       } 
      } 
        ); 


$("#example tfoot th").each(function (i) { 
      var title = $('#example thead th').eq($(this).index()).text(); 
      if(title!=='Date of Upload' && title!=='Action'){ 
     var select = $('<select style="width:100%"><option value="">Select '+title+'</option></select>') 
      .appendTo($(this).empty()) 
      .on('change', function() { 
       var val = $(this).val(); 

       table.column(i) 
        .search(val ? '^'+$(this).val()+'$' : val, true, false) 
        .draw(); 
      }); 

     table.column(i).data().unique().sort().each(function (d, j) { 
      select.append('<option value="'+d+'">'+d+'</option>') 
     }); 
      } 
    }); 

Пожалуйста, дайте мне знать, если есть способ, чтобы решить эту проблему.

+0

Похоже, что нет «Эксперта» в Stackoverflow, кто может решить этот issue.No один даже надоедает просмотр, глядя на заголовке вопроса .LoLz – user1411837

+1

Я считаю, что ваш выбор тегов вызвал смутное внимание на вопрос. 'PHP' на самом деле не в фокусе здесь, и тег' bootstrap' никогда не должен использоваться в этом контексте -> «_Не нужно путать с CSS-сетью Bootstrap Twitter, используйте тег twitter-bootstrap ..» Кроме того, jQuery dataTables не имеет ничего общего с самим загрузочным бутстрапом, dataTables просто упрощает структуру CSS-строкой twitter. – davidkonrad

ответ

1

Существует простой вариант для этого, bFooter. bFooter определяет, хотите ли вы, чтобы нижний колонтитул был включен в экспорт или нет. Пример:

var table = $('#example').DataTable({ 
    //... other initialisation options 
    tableTools: { 
     sSwfPath: "/swf/copy_csv_xls_pdf.swf"", 
     aButtons: [ 
      { sExtends :'pdf', 
       oSelectorOpts: { filter: 'applied', order: 'current' }, 
       bFooter: false //<-- add this to each button declaration 
      } 
      //... more buttons 
     ] 
    } 
}) 
+1

@ user1411837, так что - это сработало? Вы, кажется, очень жаждали быстрого ответа, два дня назад ... – davidkonrad

0

У меня недостаточно репутации, чтобы ответить на @davidkonrad, но его решение сработало и для меня. Спасибо.

Вот мой код для справки, с ColVis (скрытие столбцов), TableTools (экспорт в csv, pdf) и ColReorder (порядок изменения таблиц). Все отлично работает, за исключением того, что переупорядочивание столбцов не отражается на экспорте, но я уверен, что это возможно. Имейте в виду, что формат кода испортил некоторые из моих отступов.

$(document).ready(function() { 
$('#content').DataTable({ 
    dom: 'TC<"clear">Rlfrtip', 
    "oTableTools": { 
     "sSwfPath": "/configs/DataTables-1.10.5/media/swf/copy_csv_xls_pdf.swf", 
     "aButtons": [ 
      {'sExtends':'copy', 
       "oSelectorOpts": { filter: 'applied', order: 'current' }, 
       "mColumns": "visible", 
       "bFooter": false 
      }, 
      {'sExtends':'print', 
       "oSelectorOpts": { filter: 'applied', order: 'current' }, 
       "mColumns": "visible", 
       "bFooter": false, 
      }, 
      {'sExtends':'csv', 
       "oSelectorOpts": { filter: 'applied', order: 'current' }, 
       "mColumns": "visible", 
       "bFooter": false, 
      }, 
      {'sExtends':'pdf', 
       "oSelectorOpts": { filter: 'applied', order: 'current' }, 
       "mColumns": "visible", 
       "bFooter": false, 
      } 
     ] 
    }, 
    initComplete: function() { 
     var api = this.api(); 

     api.columns().indexes().flatten().each(function (i) { 
      var column = api.column(i); 
      var select = $('<select><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 

        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 

      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
     }); 
    } 
}); 
});