Kendo UI 使用 OData v4 lambda 运算符过滤数据源
Kendo UI DataSource filtering using OData v4 lambda operators
我想使用 OData v4 lambda operators any
和 all
.
过滤 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"。支持最后三个
仅适用于字符串字段。
我自己也试过了,还是不行,你可以启动例子,观察网络请求你会发现发给服务器的请求不包括自定义运算符,如果你切换到客户端过滤你会得到一个错误。所以这行不通,至少目前是这样。
顺便问一下,为什么需要这样的过滤?
如果您真的需要这样的过滤,您可以扩展网格并覆盖包括您的自定义运算符在内的过滤器,我在这里看到了示例,但我自己并没有这样做。不过,我一直在扩展其他小部件。
可以这样写:
filter: { field: 'Clients/any(c:c.Id eq 1)', operator: 'eq', value: true }
我想使用 OData v4 lambda operators any
和 all
.
我找不到任何关于如何使用 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"。支持最后三个 仅适用于字符串字段。
我自己也试过了,还是不行,你可以启动例子,观察网络请求你会发现发给服务器的请求不包括自定义运算符,如果你切换到客户端过滤你会得到一个错误。所以这行不通,至少目前是这样。
顺便问一下,为什么需要这样的过滤? 如果您真的需要这样的过滤,您可以扩展网格并覆盖包括您的自定义运算符在内的过滤器,我在这里看到了示例,但我自己并没有这样做。不过,我一直在扩展其他小部件。
可以这样写:
filter: { field: 'Clients/any(c:c.Id eq 1)', operator: 'eq', value: true }