Kendo UI 使用 OData v4 lambda 运算符过滤数据源

Kendo UI DataSource filtering using OData v4 lambda operators

我想使用 OData v4 lambda operators anyall.

过滤 Kendo 数据源

我找不到任何关于如何使用 dataSource.filter 属性 实现此目的的信息。我可以通过在 URL 中注入过滤器来过滤数据源,如下所示:

dataSource.transport.read.data.$filter = "Clients/any(c:c/Id eq 1)"

但这对我来说不切实际。我正在寻找的是一种声明过滤器的方法,类似于:

filter: { field: 'Clients/Id', operator: 'any', value: 1 }

Kendo UI 当前版本甚至支持 OData lambda 运算符吗?

目前没有这样的支持。这是来自文档:

filter.operator String

过滤器运算符(比较)。支持的运算符是:"eq" (等于)、"neq"(不等于)、"lt"(小于)、"lte"(小于 或等于)、"gt"(大于)、"gte"(大于或等于)、 "startswith"、"endswith"、"contains"。支持最后三个 仅适用于字符串字段。

我自己也试过了,还是不行,你可以启动例子,观察网络请求你会发现发给服务器的请求不包括自定义运算符,如果你切换到客户端过滤你会得到一个错误。所以这行不通,至少目前是这样。

http://dojo.telerik.com/areXe

顺便问一下,为什么需要这样的过滤? 如果您真的需要这样的过滤,您可以扩展网格并覆盖包括您的自定义运算符在内的过滤器,我在这里看到了示例,但我自己并没有这样做。不过,我一直在扩展其他小部件。

可以这样写:

filter: { field: 'Clients/any(c:c.Id eq 1)', operator: 'eq', value: true }