Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Primereact数据表:筛选空值或模板值_Reactjs_Datatable_Primereact - Fatal编程技术网

Reactjs Primereact数据表:筛选空值或模板值

Reactjs Primereact数据表:筛选空值或模板值,reactjs,datatable,primereact,Reactjs,Datatable,Primereact,我在primereact中有一个datatable,其中包含一个客户列表,其中有一列validTo,返回日期或空值。我想过滤所有有效的客户,所以我会过滤等于null,但这不起作用,因为null会重置过滤器 第二种选择是在模板中用类似“-”的内容替换null,但是如何过滤模板返回的值,因为看起来datatable只过滤源数据 更新1: 我走得更远一点 我的专栏是这样的 <Column field="giltbis" header="giltbis"

我在primereact中有一个datatable,其中包含一个客户列表,其中有一列
validTo
,返回日期或空值。我想过滤所有有效的客户,所以我会过滤等于null,但这不起作用,因为null会重置过滤器

第二种选择是在模板中用类似“-”的内容替换null,但是如何过滤模板返回的值,因为看起来datatable只过滤源数据

更新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)}
    />
  );
const handleFilterClick=(值)=>{
setgiltbisSelected(值);
dt.当前过滤器(值,“giltbis”,“custom”);
};
常量filterGiltbis=(值)=>{
如果(giltbisSelected==“Gültig”){
返回值==null;
}else if(giltbisSelected==“Ungültig”){
返回值!=null;
}否则{
//如何取消筛选或显示所有值
}
};
常数giltbisFilterElement=(
handleFilterClick(e.value)}
/>
);

所以只剩下一个问题了。如何取消筛选或显示所有值?

您需要实现自定义筛选功能。这里有一个例子

filterMatchMode="custom" filterFunction={customFunction}


export const customFunction = (value, filter) => {
  return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0
}

您需要实现一个自定义筛选函数。这里有一个例子

filterMatchMode="custom" filterFunction={customFunction}


export const customFunction = (value, filter) => {
  return value.toUpperCase().indexOf(filter.toUpperCase()) >= 0
}

好的,这个例子把我引向了正确的方向。你有解决我最后一个问题的办法吗?请参阅我问题的更新1。如果在SelectButton中添加第三个选项,则所有值都将返回true,然后在else in filterGiltbis函数中返回true?这行吗?好的,这个例子把我引向了正确的方向。你有解决我最后一个问题的办法吗?请参阅我问题的更新1。如果在SelectButton中添加第三个选项,则所有值都将返回true,然后在else in filterGiltbis函数中返回true?这行吗?