Primereact datatable: фильтровать нулевые значения или значения шаблона - PullRequest
0 голосов
/ 16 июня 2020

У меня есть таблица данных в primereact со списком клиентов, в котором есть столбец validTo, который возвращает дату или ноль. Я хочу отфильтровать всех действительных клиентов, поэтому я бы отфильтровал значение равно null, но это не работает, потому что null сбрасывает фильтр.

Второй вариант - заменить null на что-то вроде «-» в шаблоне , но как мне отфильтровать значение, возвращаемое шаблоном, так как кажется, что datatable фильтрует только исходные данные?

Обновление 1:

Я получил немного далее.

мой столбец выглядит так

    <Column
       field="giltbis"
       header="giltbis"
       filter={true}
       filterElement={giltbisFilterElement}
       filterMatchMode="custom"
       filterFunction={filterGiltbis}
       sortable={true}
       body={dateTemplate_giltbis}
    />

А вот моя настройка фильтра:

  const handleFilterClick = (value) => {
    setgiltbisSelected(value);
    dt.current.filter(value, "giltbis", "custom");
  };
  const filterGiltbis = (value) => {
    if (giltbisSelected === "Gültig") {
      return value == null;
    } else if (giltbisSelected === "Ungültig") {
      return value != null;
    } else {
      //how to cancel filter or show all values
    }
  };
  const giltbisFilterElement = (
    <SelectButton
      style={{ width: "100%" }}
      value={giltbisSelected}
      options={giltbisoptions}
      onChange={(e) => handleFilterClick(e.value)}
    />
  );

Осталась только одна проблема. Как отменить фильтрацию или показать все значения?

1 Ответ

1 голос
/ 16 июня 2020

Вам необходимо реализовать настраиваемую функцию фильтра. Вот пример

filterMatchMode="custom" filterFunction={customFunction}


export const customFunction = (value, filter) => {
  return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...