提问人:Nugraha 提问时间:5/25/2023 更新时间:5/25/2023 访问量:156
在 PrimeReact DataTable 中使用 rangedate 过滤器
using rangedate filter in primereact datatable
问:
我在Next.js-TypeScript中的rangedate过滤器有问题。我正在使用 primereact 库。代码如下:
const [filters, setFilters] = useState<DataTableFilterMeta>({
woroStartDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] },
woroStatus: { value: 'OPEN', matchMode: FilterMatchMode.EQUALS }, //other column filter
});
const [startDate, setStartDate] = useState<string | Date | Date[] | null>(null);
const [endDate, setEndDate] = useState<string | Date | Date[] | null>(null);
const handleStartDateChange = (e: any) => {
setStartDate(e.value);
};
const handleEndDateChange = (e: any) => {
setEndDate(e.value);
};
const onDateFilterChange = () => {
const newFilters = { ...filters };
if (startDate && endDate) {
const startDateValue = startDate ? startDate.toString() : null;
const endDateValue = endDate ? endDate.toString() : null;
newFilters['woroStartDate'] = {
matchMode: FilterMatchMode.DATE_IS,
value: [startDateValue, endDateValue],
};
} else {
newFilters['woroStartDate'] = {
operator: FilterOperator.AND,
constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }],
};
}
setFilters(newFilters);
};
//filter form
<div>
const renderHeader = () => {
return (
<Calendar className="w-full md:w-10rem" value={startDate} onChange={handleStartDateChange} dateFormat="dd/mm/yy" showButtonBar />
<span className="mx-2">to</span>
<Calendar className="w-full md:w-10rem" value={endDate} onChange={handleEndDateChange} dateFormat="dd/mm/yy" showButtonBar />
<React.Fragment>
<Button className="ml-2" severity="secondary" type="button" tooltip="Filter Date" tooltipOptions={{ position: 'right', showDelay: 300 }} icon="pi pi-filter" outlined rounded onClick={onDateFilterChange} />
</React.Fragment>
</div>
);
};
const header = renderHeader();
//datatable and column
<DataTable
value={woros}
filters={filters}
emptyMessage="No Work Order found."
globalFilterFields={['woroStartDate', 'woroStatus']}
header={header} >
<Column
field="woroStartDate"
header="WorkOrder Date"
sortable
style={{ width: '25%' }}
body={(rowData: any) =>
new Date(rowData.woroStartDate).toLocaleDateString("en-GB", {
day: "numeric",
month: "short",
year: "numeric"
})
}
/>
筛选器未成功筛选我的数据表。当我单击过滤器按钮时,出现错误: TypeError:value.toDateString 不是函数。
而且表中只有 20 个数据,所以后端似乎不需要做任何更改,但我还没有找到解决方案。希望有人能帮助我。谢谢。。
答: 暂无答案
评论
Calendar
Date
String
toDateString()
String
Date