Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery DataTable-隐藏列问题_Javascript_Jquery_Ruby On Rails_Jquery Datatables - Fatal编程技术网

Javascript jQuery DataTable-隐藏列问题

Javascript jQuery DataTable-隐藏列问题,javascript,jquery,ruby-on-rails,jquery-datatables,Javascript,Jquery,Ruby On Rails,Jquery Datatables,我正在从事一个使用jquerydatatables主题(智能管理)的项目。我发现这个工具是一个很棒的客户端解决方案,特别是在不返回服务器的情况下过滤结果 由于没有足够的空间,我们显示的表字段只是数据库中的一部分。问题是导出功能只包括这些有限的列。我建议,如果我们有一个隐藏的列,它也将被导出(例如:csv、xls、pdf)等 我试着找一块地,但我没有成功。如果你能指出我做错了什么,我将不胜感激 我引用了以下文章: 没有控制台错误,其余功能(过滤、导出工作正常) 然而,我担心的是,我们可能有一个错误

我正在从事一个使用jquerydatatables主题(智能管理)的项目。我发现这个工具是一个很棒的客户端解决方案,特别是在不返回服务器的情况下过滤结果

由于没有足够的空间,我们显示的表字段只是数据库中的一部分。问题是导出功能只包括这些有限的列。我建议,如果我们有一个隐藏的列,它也将被导出(例如:csv、xls、pdf)等

我试着找一块地,但我没有成功。如果你能指出我做错了什么,我将不胜感激

我引用了以下文章:

没有控制台错误,其余功能(过滤、导出工作正常)

然而,我担心的是,我们可能有一个错误,没有更新到最新的。我想我们有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: -> }}}
#@fn设置:->{{{
#@brief在提供的@tableId的帮助下设置DataTable插件。
setupDataTables:->
自我=@
@如果@$\u bulkControls.length>0,则设置复选框()
@$\u dataTables=$(@$\u tables)。dataTable
“columnDefs”:[
{
“目标”:[1,2,3,4],
“可见”:错误
}
],
“sDom”:“t”
“可旋转工具”:{
“阿布顿”:[
“复制”,
{
“性倾向”:“csv”,
“缝合”:@generateDocumentName()
},
{
“性倾向”:“xls”,
“缝合”:@generateDocumentName()
},
{
“性倾向”:“pdf”,
“缝合”:@generateDocumentName(),
“sPdfMessage”:“SmartAdmin PDF导出”,
“sPdfSize”:“字母”
},
{
“性倾向”:“打印”,
“sMessage”:“由SmartAdmin生成(按Esc键关闭)”
}
],
“sSwfPath”:”
},
“自动宽度”:正确,
“预绘制回调”:->
#初始化响应datatables帮助程序一次。
if!self.$\u ResponsiveHelperDataTableTools
self.$\u responsiveHelperDataTableTools=新的responsiveDataTableHelper($(“#datatable_tabletools”),self.$\u断点定义)
,
“行回调”:(nRow)->
self.$\u responsiveHelperDataTableTools.createExpandIcon(nRow)
,
“drawCallback”:(oSettings)=>
@$\u responsiveHelperDataTableTools.response()
#如果需要,设置散装控制容器KCO
@setupBulkControls()如果@$\u bulkControls.length>0
$(“#datatable_tablettools thead th input[type=text]”)。关于“键控更改”,->
self.$\u数据表
.column($(this).parent().index()+':visible')
.search(this.value)
.draw()
#安装结束:->}}

提前感谢并祝大家周末愉快。

因此,您需要的是,额外的列无法显示在UI中(因为房地产限制)
但是,您希望这些额外的列出现在导出的csv中。

datatable所做的是隐藏列出现在HTML表中,但被标记为display:none。这是因为隐藏列的概念是,它们不会显示在任何地方,但它们是可用的,以便可以对其进行搜索。

如果您想实现这一点,您需要编写一个自定义jQuery,它将选择列中的所有数据,然后将其刷新为csv。

也就是说,我认为最好为控制器方法创建一个新的响应类型来处理csv,并将导出列与显示列分开。换句话说

respond_to |format| do 
html: <something> 
json: <something> 
csv:@model.to_csv
响应|格式|执行
html:
json:
csv:@model.to_csv

能否为每个按钮(例如
{“sExtends”:“xls”,“mColumns”:“all”,…}
)添加带有
all
值的参数,并查看是否有任何区别?确保您正在使用最新的TableTools插件。问题也可能出在您正在使用的库中,当屏幕大小减小时,它会从DOM中删除
元素