使用OData v4 lambda运算符进行Kendo UI DataSource过滤

时间:2015-08-10 15:19:54

标签: kendo-ui odata kendo-datasource

我想使用OData v4 lambda operators alldataSource.filter来过滤Kendo DataSource。

我无法使用dataSource.transport.read.data.$filter = "Clients/any(c:c/Id eq 1)" 属性找到有关如何实现此目的的任何信息。我可以通过在URL中注入过滤器来过滤DataSource,如下所示:

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

但这在我的案例中并不实用。我正在寻找的是一种声明过滤器类似于此的方法:

function yourFunction() {
    if (window.innerWidth >= 992) {
        //TODO: Your code here
    }
}

// Set both event handlers to same function
window.onload = window.onresize = yourFunction;

Kendo UI是否支持当前版本的OData lambda运算符?

2 个答案:

答案 0 :(得分:2)

目前没有此类支持。这来自文档:

  
    

filter.operator String

  
     

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

我自己也尝试了它并且它不起作用,你可以启动示例并观察网络请求,你会注意到对服务器的请求不包括自定义操作符,如果你切换到客户端过滤你会收到错误。所以它至少现在都不会起作用。

http://dojo.telerik.com/areXe

顺便问一下为什么你需要这样的过滤? 如果你真的需要这样的过滤,你可以扩展网格并覆盖过滤器,包括你的自定义操作符,我在这里看过例子,但我自己也没做过。我一直在扩展其他小部件。

答案 1 :(得分:0)

可以这样做:

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