使用OData枚举作为字段过滤网格

Sia*_*Mey 5 kendo-ui kendo-grid kendo-ui-angular2

我正在尝试使用枚举字段过滤网格数据源。

似乎OData API已弃用/删除了在服务器端具有无前缀前缀枚举的功能。

我将以下内容添加到网格的筛选器中。

let fd1: FilterDescriptor = {
  field: 'orderStatus',
  operator: 'eq',
  value: "SOPSModel.OrderStatusEnum'Open'",
  ignoreCase: false
}
this.filter.filters.push(fd1);
Run Code Online (Sandbox Code Playgroud)

问题似乎是kendo-data-query中提供的toOdataString函数将Enum标识为字符串,然后将其引用并转义,这使得服务器端API拒绝枚举并失败。

我设置了自己的过滤器解析器,该解析器工作正常,但是使用已添加到Grid中的新过滤器选项,我确实需要一个适当的解决方案。

因此,有人可以指出我如何处理Telerik编写的OData枚举吗?

Fro*_*her 0

我使用以下示例完成了更改传输参数映射:

https://docs.telerik.com/kendo-ui/api/javascript/data/datasource/configuration/transport.parametermap

就像是:

dataSource: {
    type: "odata-v4",
    transport: {
        read: {
            dataType: "json",
            url: datasourceURL          
        },            
        parameterMap: function (data, type) {               
            var c = kendo.data.transports["odata-v4"].parameterMap(data, type);


// transform your c exactly how you wish to make the call to the service and put it on a string

return c; 
}
Run Code Online (Sandbox Code Playgroud)