dx-react-grid 过滤器选项 'equal' 不工作

dx-react-grid filter option 'equal' not working

我用 dx React Grid 创建了一个 table,在其中一列中,数据在 DataProvider 的帮助下显示为彩色空块,每种颜色对应一个1、2、3、4 或 5 中的数字。

这是我的网格实现片段:

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

除过滤器选项 ['equal', 'notEqual'] 外,所有其他选项(例如 greaterThancontains 等)都有效。 其他列中显示文本值的所有选项都有效。

在下图中,前 4 列对应于显示彩色块的列,最后一列是另一列,直接显示文本值。如您所见,filter = 3 应该给我看绿色方块,但没有。即使 greaterThanOrEquallessThanOrEqual 也有效(图中未显示)

我该如何解决这个问题?

[编辑]:注意:正如我刚刚检查的那样,即使没有 DataProvider 和带状列,即直接显示数字,这个问题也存在。

我想你在数据库中将 'Rating' 存储为 'number',是吗?当 Grid 处理 'equal'/'notEqual' 过滤操作时,它比较来自过滤器编辑器 (string) 的值和来自行 (number) 的值。它会导致所描述的问题。此问题已 fixed。该修复程序将在下一次更新中提供。

目前,您可以使用自定义谓词作为解决方法:

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

Demo.