Экспорт данных через Datatable после удаления - PullRequest
0 голосов
/ 13 октября 2018

У меня есть таблица, и я хочу экспортировать данные с помощью кнопок экспорта jQuery Datatables, проблема в том, что я хочу очистить определенные значения в определенных столбцах (в HTML-таблице в браузере нет проблем) проблема заключается в том, что япопробуй экспортировать данные.Datatables создает файл с данными, которые я предположительно стёр.

Вот мой код:

$("#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 ?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018
  1. Поскольку data в таблице будет экспортировано в Excel, мы должны использовать метод DataTable data(), чтобы очистить данные для fnDrawCallback .

  2. Чтобы сохранить порядок, добавляется невидимый столбец для хранения значения для сортировки, а видимый столбец ( Выходные данные ) будет сортировать, используя данные в невидимом столбце..

Указанные выше изменения применяются к этому коду .Однако таблица выглядит странно, если мы отсортируем Route Exit .

0 голосов
/ 13 октября 2018

Очистите элементы перед инициализацией плагина.

Плагин хранит данные внутри, поэтому очистка текста в html после его инициализации не удаляет его из внутреннего кэша данных.Именно внутренние данные будут экспортироваться, а не видимый HTML-текст

Если текст пуст для начала, то внутренний кэш будет таким же, как и отображаемый

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

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

Вы также можете полностью удалить строки, например:

$("#TableId tbody tr").has('.clearthis').remove()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...