删除后的数据表导出值

时间:2018-10-13 13:44:48

标签: javascript jquery datatables

我有一个表,我想使用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("");
  });
}

这里是Codepen with my code

我做错了什么?也许在 frDrawCallback 上调用了updateTable吗?

2 个答案:

答案 0 :(得分:1)

  1. 由于表中的data将被导出到excel,因此我们应该使用DataTable data()方法清除 fnDrawCallback 上的数据。

  2. 为保留顺序,添加了一个不可见列来存储要排序的值,可见列(退出数据)将使用不可见列中的数据进行排序。

以上更改适用于此code pen。但是,如果按 Route Exit (路线出口)排序,该表看起来很奇怪。

答案 1 :(得分:0)

在初始化插件之前清除元素。

该插件在内部存储数据,因此在初始化后清除html中的文本不会将其从内部数据缓存中删除。将导出内部数据,而不是可见的html文本

如果文本开头是空的,则内部缓存将与显示的内容相同

$("#TableId tbody .clearthis").empty();

$("#TableId").DataTable({......})

您还可以完全删除行,例如:

$("#TableId tbody tr").has('.clearthis').remove()