Параметр фильтра DX-реагировать-сетки «равно» не работает - PullRequest
0 голосов
/ 13 февраля 2019

Я создал таблицу с dx React Grid, и в одном из столбцов данные отображаются в виде цветных пустых блоков с помощью DataProvider, причем каждый цвет соответствует числу из 1, 2, 3, 4 или 5.

Вот мой фрагмент реализации Grid:

<Grid rows={rows} columns={columns}>
    <FilteringState />
    <SearchState />
    <RatingHeatmapProvider for={skillColumns}  />
    <IntegratedFiltering />
    //....
    <Table />
    <TableHeaderRow />
    <Toolbar />
    <SearchPanel />
    <TableFilterRow showFilterSelector iconComponent={FilterIcon} />
    //....
</Grid>

Кроме параметров фильтра ['equal', 'notEqual'], все остальные параметры, такие как greaterThan, contains и т. Д. Работают.Все параметры в других столбцах, для которых отображается отображаемое текстовое значение, работают.

На рисунке ниже первые 4 столбца соответствуют столбцу с цветными блоками на дисплее, последний столбец является другим с текстовыми значениями, отображаемыми непосредственно на дисплее.Как видите, filter = 3 должен был показать мне зеленую плитку, а она - нет.Даже greaterThanOrEqual или lessThanOrEqual работает (не показано на рисунке)

enter image description here

Как это исправить?

[РЕДАКТИРОВАТЬ]: Примечание: Как я только что проверил, даже без DataProvider и полосатых столбцов, то есть с отображением чисел непосредственно, эта проблема присутствует.

1 Ответ

0 голосов
/ 14 февраля 2019

Полагаю, вы храните «Rating» как «число» в вашей базе данных, не так ли?Когда Grid обрабатывает операции фильтрации «равный» / «notEqual», он сравнивает значение из редактора фильтров (string) и значение из строки (number).Это вызывает описанную проблему.Эта проблема уже была исправлена ​​.Исправление будет доступно в следующем обновлении.

В настоящее время вы можете использовать собственный предикат в качестве обходного пути:

filteringColumnExtensions: [
  {
    columnName: "comumn_name",
    predicate: (value, filter) => {
      if (filter.operation === "equal") {
        return String(value) === filter.value;
      }
      // process other filter operations here...
    }
  }
]

Демо .

...