Сброс отфильтрованных данных в таблицах данных

#javascript #jquery #datatables #datatables-1.10

#javascript #jquery #таблицы данных #таблицы данных -1.10

Вопрос:

У меня есть таблица данных, в которой данные извлекаются с помощью AJAX. Затем у меня есть две функции поиска, которые фильтруют данные. Функции поиска работают нормально после работы с нефильтрованными данными. После применения фильтра я не могу очистить фильтр или применить другой, поскольку оба фильтра являются взаимоисключающими (один фильтр полностью оплачен, а другой полностью неоплачен). Я думаю, моя проблема в том, что после фильтрации данных я пытаюсь очистить или применить другой фильтр, он воздействует на подмножество данных (уже отфильтрованные данные). Как мне очистить сброс отфильтрованных данных перед применением нового фильтра и как мне сбросить фильтры. Я уже пробовал несколько решений на этом сайте, но они не сработали. Вот мои функции фильтрации.

 function outstandingFees() {
  $.fn.dataTable.ext.search.push(
    function (settings, data, dataIndex) {
      var zero = 0;
      var fee = parseFloat(data[8]) || 0; // use data for the balance due column
      if (fee > zero) {
        return true;
      }
      return false;
    }
  );
  table.draw();
}
 
function paidFees() {
  $.fn.dataTable.ext.search.push(
    function (settings, data, dataIndex) {
      var zero = 0;
      var fee = parseFloat(data[8]); // use data for the balance due column
      if (fee === zero) {
        return true;
      }
      return false;
    }
  );
  table.draw();
}

function allFees() {
  $.fn.dataTable.ext.search.push(
    function (settings, data, dataIndex) {
      var zero = 0;
      var fee = parseFloat(data[8]) || 0; // use data for the balance due column
      if (zero <= fee) {
        return true;
      }
      return false;
    }
  );
  table.draw();
}
  

Комментарии:

1. Вы очищаете пользовательский фильтр с помощью $.fn.dataTable.ext.search.pop() (последний ввод первым выводом)

2. Спасибо. Я знал, что это должно быть что-то простое, чего мне не хватало. Это сработало отлично. Я добавил его в начало каждой из двух функций фильтра и использовал его в функции allFees .

3. Не могли бы вы включить это в ответ, чтобы мы могли видеть, что на этот вопрос дан ответ.

Ответ №1:

Как сказал Дэвид Конрад

 $.fn.dataTable.ext.search.pop()
  

сработало для меня. Я просто добавил его в начало каждого метода, чтобы очистить фильтр перед применением нового.