我用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
都有效(未在图片中显示)
我该如何解决?
[EDIT]:注意:正如我刚刚检查过的,即使没有DataProvider和带状列,也就是直接显示存在此问题的数字。
答案 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。