Primereact 数据表:过滤空值或模板值
Primereact datatable: filter null values or template values
我在 primereact 中有一个数据表,其中包含一个客户列表,其中有一列 validTo
,其中 returns 是日期或空值。我想过滤所有有效客户,所以我会过滤等于 null,但这不起作用,因为 null 会重置过滤器。
第二个选项是在模板中将null替换为类似“-”的东西,但是我如何过滤模板返回的值,好像数据表只过滤源数据?
更新 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)}
/>
);
所以只剩下一个问题了。如何取消筛选或显示所有值?
您需要实现自定义过滤功能。这是一个例子
filterMatchMode="custom" filterFunction={customFunction}
export const customFunction = (value, filter) => {
return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0
}
我在 primereact 中有一个数据表,其中包含一个客户列表,其中有一列 validTo
,其中 returns 是日期或空值。我想过滤所有有效客户,所以我会过滤等于 null,但这不起作用,因为 null 会重置过滤器。
第二个选项是在模板中将null替换为类似“-”的东西,但是我如何过滤模板返回的值,好像数据表只过滤源数据?
更新 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)}
/>
);
所以只剩下一个问题了。如何取消筛选或显示所有值?
您需要实现自定义过滤功能。这是一个例子
filterMatchMode="custom" filterFunction={customFunction}
export const customFunction = (value, filter) => {
return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0
}