如何解决带有自定义过滤器单元格的SelectionRange到React Kendo Telerik中的requestState的toDataSourceRequestString
我有一个过滤器,需要将查询发送到客户端从toDataSourceRequestString获取的aspnet核心服务器。
我正在尝试在过滤器查询中使用DaterangePicker,并使用SelectionRange保留开始日期和结束日期。 运算符看起来像这样:
const inRange = (current,{ start,end }) => (start === null || current >= start) && (end === null || current <= end);
return (
<DaterangePicker
{...props}
onChange={event => {
props.onChange({
value: {start: event.value.start,end: event.value.end },operator: inRange,syntheticEvent: event.syntheticEvent,});
}}
/>
是从https://www.telerik.com/kendo-react-ui-develop/components/grid/filtering/#custom-filter-cells处的rangeFilterCell.jsx抓取的。
对于Grid,我将onDataStateChange与事件GridDataStateChangeEvent一起使用,这就是我将requestState设置为GridDataStateChangeEvent.dataState的地方。
有关如何设置过滤器以及创建请求字符串的示例:
const [requestState,setRequestState] = useState<DataSourceRequestState>({
skip: 0,take: 15,sort: [
{
field: 'id',dir: 'desc'
}
],filter: {
filters: [
{
field: 'status',operator: 'eq',value: 'Open'
}
],logic: 'and' as const
}
});
handleFetch(`${toDataSourceRequestString(requestState)}`);
未设置日期时,查询字符串将按预期变为page=1&pageSize=15&sort=id-desc&filter=status~eq~'Open'
,并且可以正常工作。
但是,当尝试过滤起始日期时,SelectionRange对象不会将其值转换为querystring,而是将querystring保留为:
filter=(createdAt~(current,%20{%20%20%20%20start,%20%20%20%20end%20%20})%20=%3E%20(start%20===%20null%20||%20current%20%3E=%20start)%20&&%20(end%20===%20null%20||%20current%20%3C=%20end)~[object%20Object]~and~status~eq~%27Open%27)&sort=id-desc&page=1&pageSize=15
filter=(createdAt~(current,{
start,end
}) => (start === null || current >= start) && (end === null || current <= end)~[object Object]~and~status~eq~'Open')&sort=id-desc&page=1&pageSize=15
请注意,由于明显原因,服务器无法解析[object Object]。
我也尝试使用with代替包含开始和结束的对象,但也使用了min max,如上面所示的自定义过滤器单元链接中所示。
这是过滤器对象的console.log版本:
{
"filter": {
"logic": "and","filters": [
{
"field": "createdAt","value": {
"start": "2020-09-02T22:00:00.000Z","end": "2020-09-17T22:00:00.000Z"
}
},{
"field": "status","operator": "eq","value": "Open"
}
]
},"sort": [
{
"field": "id","dir": "desc"
}
],"skip": 0,"take": 15
}
我们尝试查看不同的选项,但似乎没有办法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。