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

时间:2014-12-04 10:28:08

标签: javascript jquery jquery-datatables tabletools

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

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

我想要隐藏状态列和没有状态为" ok"的行。 任何解决这个问题的技巧都将不胜感激。

1 个答案:

答案 0 :(得分: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] - &gt;仅导出iddatadate

fnInit - &gt;在初始化时能够对按钮执行某些操作

$(nButton).on('mousedown', function() { - &gt;过滤状态为&#34;确定&#34;

的行

$(nButton).on('mouseup', function() { - &gt;取消了&#34; ok&#34;导出完成时过滤

oSelectorOpts : { filter: 'applied', order: 'current' } - &gt;将tabletools设置为仅按照它们为用户显示的顺序导出过滤的行。

使用mousedown / mouseup的原因是上述内容不适用于click或按钮功能fnComplete

将此功能添加到您的所有按钮,例如xlscsvpdfprint。我认为 print按钮存在问题。据我所知,它早先出现了问题&#34;按照按钮说明。不知道最近是否已修复此问题。