我有一个表,我想使用jQuery Datatables导出按钮导出数据,问题是我想清除特定列中的特定值(在浏览器上的HTML表中没有问题),问题是当我尝试导出数据。数据表正在使用我应该擦除的数据创建文件。
这是我的代码:
$("#TableId").DataTable({
dom: '<"top"Bf>rt<"bottom"lip><"clear">',
buttons: [
"copy", //'csv', 'excel', 'pdf', 'print'
{
extend: "excel",
title: "Report",
footer: true
},
{
extend: "pdf",
title: "Report",
footer: true
},
{
extend: "print",
title: "Report",
footer: true
}
],
aLengthMenu: [[2, 3, 5, 1, -1], [2, 3, 5, 1, "All"]],
bDestroy: true,
iDisplayLength: -1,
fnDrawCallback: clearDateValues
});
function clearDateValues() {
$("#TableId tbody .clearthis").each(function() {
$(this).text("");
});
}
我做错了什么?也许在 frDrawCallback 上调用了updateTable吗?
答案 0 :(得分:1)
由于表中的data
将被导出到excel,因此我们应该使用DataTable data()
方法清除 fnDrawCallback 上的数据。
为保留顺序,添加了一个不可见列来存储要排序的值,可见列(退出数据)将使用不可见列中的数据进行排序。
以上更改适用于此code pen。但是,如果按 Route Exit (路线出口)排序,该表看起来很奇怪。
答案 1 :(得分:0)
在初始化插件之前清除元素。
该插件在内部存储数据,因此在初始化后清除html中的文本不会将其从内部数据缓存中删除。将导出内部数据,而不是可见的html文本
如果文本开头是空的,则内部缓存将与显示的内容相同
$("#TableId tbody .clearthis").empty();
$("#TableId").DataTable({......})
您还可以完全删除行,例如:
$("#TableId tbody tr").has('.clearthis').remove()