排除jQuery DataTables.net TableTools的最后一列

时间:2013-11-05 02:12:07

标签: jquery datatables jquery-datatables

问题:在使用TableTools附加功能导出时,如何排除jQuery DataTables.net的最后一列?

详情

我正在使用jQuery DataTables.net和TableTools附加功能初始化几个不同的表。它们都使用相同的初始化代码。

不同的表具有不同的列数。但是,所有表都有最后一列,这是一个带有按钮的“操作”列。使用TableTools导出时,它包含导出中此列的某些元素。我想排除所有表的TableTools导出的操作列。

我知道mColumns选项,但看起来您需要知道列数,这在我描述的场景中不起作用,所以请不要给我这样的答案:< / p>

"mColumns": [ 0, 1, 4 ]

由于

5 个答案:

答案 0 :(得分:6)

仅适用于googlers: 在tabletools 2.2.3中,您现在可以使用mColumns函数

var dataTable = $grdData.DataTable({
     tableTools: {
          aButtons: [{
              "sExtends": "csv",
              "sButtonText": "csv",
              "mColumns": function ( dtSettings ) {
                   var api = new $.fn.dataTable.Api( dtSettings );

                   return api.columns(":not(:last)").indexes().toArray();
              }
          }]
     }
});

答案 1 :(得分:0)

到目前为止,我发现的最好的是这些黑客。在我的情况下不是特别有用,但也许你有更好的运气

http://datatables.net/forums/discussion/327/tabletools-v1.0.2-save-as-excel-csv-copy-and-print/p3

答案 2 :(得分:0)

您可以使用以下类名排除:

"aoColumnDefs": [{ "mColumns": false, "aTargets": ["no-export"] }],

以下是我在制作中使用的类似代码:

            var oTable = $('#<%= gvComputers.ClientID %>').dataTable({
            "bJQueryUI": true,
            "bStateSave": true,
            "sPaginationType": "full_numbers",
            "aLengthMenu": [[5, 10, 25, 50, 100, -1], [5, 10, 25, 50, 100, "All"]],
            "aoColumnDefs": [
                { "sSortDataType": "dom-text", "aTargets": ["text-sort_fixed"] },
                { "sType": "numeric", "aTargets": ["numeric-sort"] },
                { "sSortDataType": "dom-select", "aTargets": ["select-sort"] },
                { "sSortDataType": "dom-checkbox", "aTargets": ["checkbox-sort"] },
                { "bSearchable": false, "aTargets": ["no-search"] },
                { "bSortable": false, "aTargets": ["no-sort"] }
            ]
        });

我动态地在表格页眉,页脚和单元格上设置了类,因为我不知道用户将从他们的个人数据视图中删除哪些列。

HTH

答案 3 :(得分:0)

在我的情况下,最佳解决方案是将列的可导出属性设置为false。您可以设置可订购可搜索等方式。

答案 4 :(得分:0)

假设您有六列,并且只想显示第1,2,3和5列。 试试这个:

<ul data-bind="foreach: kids">
                <li>                         
                    <span data-bind="text: $data.name" > </span>  
                     <button data-bind="click: $parent.removeKid">Remove (moved out)</button> 
                     <button data-bind="click: $root.addGrandKid" style="float:right;">Just had a baby</button>

                    <ul data-bind="foreach: vm.grandKids">
                        <!--ko if: $parent.name() == $data.mother() -->
                            <li>                    
                                <!--ko $data.name() --><!-- /ko -->

                            </li>  
                        <!-- /ko-->                    
                    </ul> 

                  </li>            
            </ul>