簡體   English   中英

jQuery DataTable - 隱藏列問題

[英]jQuery DataTable - Hide Column Issue

我正在開發一個使用jQuery DataTables授權主題(Smart Admin)的項目。 我發現該工具是一個很好的客戶端解決方案,專門用於過濾結果而無需返回服務器。

由於沒有足夠的空間,我們顯示的表字段只是數據庫中的一部分。 問題是導出功能只包含這些有限的列。 如果我們有一個隱藏的列也會被導出(例如:csv,xls,pdf等)

我試圖打過一個場地,這對我來說沒有用。 如果你能指出我做錯了什么,我有責任。

我引用了以下文章: 數據表示例 - 隱藏列

沒有控制台錯誤和其他功能(過濾,導出工作正常)。

我的擔心是我們可能有一個bug,沒有更新到最新版本。 我想我們有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: -> }}}

在此先感謝,祝你們周末愉快。

所以你想要的是額外的列不能在UI中顯示(因為房地產限制)
但是,您希望這些額外的列出現在導出的csv中。

數據表的作用是隱藏列存在於表HTML中,但標記為display:none。 這是因為隱藏列的想法是它們不會顯示在任何地方,但它們是可用的,以便可以搜索它。

如果你想實現這一點,你需要編寫一個自定義jQuery,它將挑選出列中的所有數據,然后將其刷新到csv中。

話雖這么說,我認為如果為控制器方法創建一個新的響應類型來處理csv並從顯示列中分離導出列是明智的。 換一種說法

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM