问题:在使用TableTools附加功能导出时,如何排除jQuery DataTables.net的最后一列?
详情
我正在使用jQuery DataTables.net和TableTools附加功能初始化几个不同的表。它们都使用相同的初始化代码。
不同的表具有不同的列数。但是,所有表都有最后一列,这是一个带有按钮的“操作”列。使用TableTools导出时,它包含导出中此列的某些元素。我想排除所有表的TableTools导出的操作列。
我知道mColumns选项,但看起来您需要知道列数,这在我描述的场景中不起作用,所以请不要给我这样的答案:< / p>
"mColumns": [ 0, 1, 4 ]
由于
答案 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>