微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有自定义过滤器单元格的SelectionRange到React Kendo Telerik中的requestState的toDataSourceRequestString

如何解决带有自定义过滤器单元格的SelectionRange到React Kendo Telerik中的requestState的toDataSourceRequestString

我有一个过滤器,需要将查询发送到客户端从toDataSourceRequestString获取的asp​​net核心服务器。

我正在尝试在过滤器查询中使用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 举报,一经查实,本站将立刻删除。