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

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

细节

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

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

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

"mColumns": [ 0, 1, 4 ] 

谢谢

仅适用于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(); } }] } }); 

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

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

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

 "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"] } ] }); 

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

心连心

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

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

 { text: "print", extend: "print", className: "btn btn-lg btn-danger", exportOptions: { columns: [0,1,2,4]} } }