jQuery dataTables - TableTools:导出时隐藏行和列

Posted

技术标签:

【中文标题】jQuery dataTables - TableTools:导出时隐藏行和列【英文标题】:jQuery dataTables - TableTools: hide row and columns while export 【发布时间】:2015-02-02 04:35:00 【问题描述】:

如何在使用 TableTools 从 DataTables 导出时排除某些列和行。

| id | data      | date           | Status |
|----|-----------|----------------|--------|
| 1  | some data | october 2014   | ok     |
| 2  | some data | september 2014 |        |

我想隐藏状态列和状态不为“ok”的行。 任何解决此问题的提示将不胜感激。

【问题讨论】:

【参考方案1】:

据我所知,没有一个“神奇”的选项可以解决这两个问题。解决每个问题的选项似乎相互排斥(如果有人能反驳这一点,那就太好了)。但是我找到了一个解决方案(为了避免冗余代码,我只为复制按钮显示它):

var table = $("#example").DataTable(
    dom: 'T<"clear">lfrtip',
    tableTools: 
      sSwfPath: "http://cdn.datatables.net/tabletools/2.2.3/swf/copy_csv_xls.swf",
      aButtons: [
            
                sExtends : "copy",
                mColumns : [0, 1, 2], 
                fnInit : function( nButton, oConfig ) 
                    $(nButton).on('mousedown', function() 
                        table.column(3).search('ok').draw();
                    );
                    $(nButton).on('mouseup', function() 
                        table.column(3).search('').draw();
                    );
                ,
                oSelectorOpts :  filter: 'applied', order: 'current' ,
            
    ]
);

解释

mColumns : [0, 1, 2] -> 仅导出 iddatadate

fnInit -> 可以在按钮初始化时做一些事情

$(nButton).on('mousedown', function() -> 过滤状态为“ok”的行

$(nButton).on('mouseup', function() -> 导出完成后取消设置“ok”过滤器

oSelectorOpts : filter: 'applied', order: 'current' -> 将 tabletools 设置为仅按照用户显示的顺序导出过滤后的行。

之所以使用mousedown/mouseup,是因为上面对click或者按钮功能fnComplete不起作用。

将此功能添加到您的所有按钮,例如xlscsvpdfprint。我认为print 按钮有问题。据我所知,它早先按照按钮说明出现了“问题”。不知道最近有没有解决。

【讨论】:

以上是关于jQuery dataTables - TableTools:导出时隐藏行和列的主要内容,如果未能解决你的问题,请参考以下文章

请教jquery一个页面渲染两个datatables总是出现其中一个table加载不成功导致

jquery dataTable 获取某行数据

jquery插件datatable为何不显示数据?

jquery plugins —— datatables 搜索后汇总

JSon 返回一串 HTML table 以显示在 jQuery datatable 的 fnopen 中

Jquery dataTable改变行颜色