2015-05-02 2 views
6

Я работаю над проектом, который использует тему jQuery DataTables с полномочиями (Smart Admin). Я нахожу инструмент отличным клиентским решением специально для фильтрации результатов, не возвращаясь на сервер.jQuery DataTable - Hide Column Issue

Поля таблицы, которые мы показываем, являются лишь частью того, что есть в базе данных из-за того, что недостаточно места. Проблема в том, что функция экспорта включает только эти ограниченные столбцы. Я красный, если у нас есть скрытый столбец, который тоже будет экспортироваться (например: csv, xls, pdf) и т. Д.

Я попытался поднять поле, и это не сработало для меня. Я обязан, если бы вы могли указать на то, что я делаю неправильно.

Я сослалась на следующей статье: Data Table Example - Hidden Columns

Там не было никаких ошибок консоли, а остальные функциональные (фильтрация, экспорт хорошо работает).

Как бы то ни было, что мы можем иметь ошибку, не обновляемся до последней. Я думаю, что у нас есть v1.10.

# @fn   setup: -> {{{ 
    # @brief  Sets up DataTable plugin with the help of the @$_tableId provided. 
    setupDataTables: -> 
    self = @ 

    @setupCheckboxes() if @$_bulkControls.length > 0 

    @$_dataTables = $(@$_tables).dataTable 
     "columnDefs": [ 
     { 
      "targets": [1, 2, 3, 4], 
      "visible": false 
     } 
     ], 
     "sDom": "<'dt-toolbar'<'col-xs-12 col-sm-6'f><'col-sm-6 col-xs-6 hidden-xs'T>r>t<'dt-toolbar-footer'<'col-sm-6 col-xs-12 hidden-xs'i><'col-sm-6 col-xs-12'p>>" 
     "oTableTools": { 
     "aButtons": [ 
      "copy", 
      { 
      "sExtends": "csv", 
      "sTitle": @generateDocumentName() 
      }, 
      { 
      "sExtends": "xls", 
      "sTitle": @generateDocumentName() 
      }, 
      { 
      "sExtends": "pdf", 
      "sTitle": @generateDocumentName(), 
      "sPdfMessage": "SmartAdmin PDF Export", 
      "sPdfSize": "letter" 
      }, 
      { 
      "sExtends": "print", 
      "sMessage": "Generated by SmartAdmin <i>(press Esc to close)</i>" 
      } 
     ], 
     "sSwfPath": "<%= asset_path('copy_csv_xls_pdf.swf') %>" 
     }, 
     "autoWidth" : true, 
     "preDrawCallback" : -> 
     # Initialize the responsive datatables helper once. 
     if !self.$_responsiveHelperDatatableTabletools 
      self.$_responsiveHelperDatatableTabletools = new ResponsiveDatatablesHelper($('#datatable_tabletools'), self.$_breakpointDefinition) 
     , 
     "rowCallback" : (nRow) -> 
     self.$_responsiveHelperDatatableTabletools.createExpandIcon(nRow) 
     , 
     "drawCallback" : (oSettings) => 
     @$_responsiveHelperDatatableTabletools.respond() 

     # Setup bulk control containers if requiredkCo 
     @setupBulkControls() if @$_bulkControls.length > 0 

    $("#datatable_tabletools thead th input[type=text]").on 'keyup change', -> 
     self.$_dataTables 
     .column($(this).parent().index()+':visible') 
     .search(this.value) 
     .draw() 


    # end of setup: -> }}} 

Заранее благодарим за пожелание и желаем вам прекрасного выходного дня.

+0

Вы можете добавить параметр [mColumns] (http://datatables.net/extensions/tabletools/button_options#mColumns) с 'all' значение для каждой из кнопок (например,' { «sExtends ":" xls "," mColumns ":" all ", ...}') и посмотреть, не имеет значения? Убедитесь, что вы используете последний плагин TableTools. Также проблема может быть в библиотеке [datatables-responsive] (https://github.com/Comanche/datatables-responsive), которую вы используете, она удаляет элементы '' из DOM при уменьшении размера экрана. –

+0

Дайте html-код с помощью java-скрипта –

ответ

0

Так что вы хотите, чтобы дополнительные столбцы не отображались в пользовательском интерфейсе (из-за ограничений по недвижимости)
Однако вы хотите, чтобы эти дополнительные столбцы присутствовали в экспортированном csv.

Что такое datatable, так это то, что скрытые столбцы присутствуют в таблице HTML, но отмечены дисплеем: none. Это связано с тем, что идея скрытых столбцов заключается в том, что они не отображаются нигде, но они доступны, чтобы их можно было искать.

Если вы хотите этого достичь, вам нужно написать пользовательский jQuery, который выберет все данные в столбцах, а затем запустит его в csv.

При этом, я думаю, было бы целесообразно, если вы создадите новый тип ответа для вашего метода контроллера для обработки csv и разделите столбцы экспорта из столбцов отображения. Другими словами

respond_to |format| do 
html: <something> 
json: <something> 
csv:@model.to_csv 

 Смежные вопросы

  • Нет связанных вопросов^_^