dx-react-grid过滤器选项“等于”不起作用

时间:2019-02-13 09:37:12

标签: reactjs devexpress devextreme

我用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']外,其他所有选项(例如greaterThancontains等)都可以使用。 其他列中显示文本值的所有选项均有效。

在下面的图像中,前4列对应于带有彩色块的显示屏,最后一列是直接具有文本值的另一列。如您所见,filter = 3应该给我看了绿色方块,而没有。甚至greaterThanOrEquallessThanOrEqual都有效(未在图片中显示)

enter image description here

我该如何解决?

[EDIT]:注意:正如我刚刚检查过的,即使没有DataProvider和带状列,也就是直接显示存在此问题的数字。

1 个答案:

答案 0 :(得分:1)

我想您在数据库中存储了“等级”作为“数字”,不是吗?当Grid处理“等于” /“不等于”过滤操作时,它将比较来自过滤器编辑器(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