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

时间:2017-11-09 11:14:26

标签: kendo-ui kendo-grid kendo-ui-angular2

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

似乎OData api已经弃用/删除了在服务器端处理前缀无Enums的能力。

我将以下内容添加到网格的过滤器中。

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

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

我设置了自己的过滤器解析器,它工作正常,但是添加到Grid的新过滤选项我真的需要一个合适的解决方案。

那么,有没有人能指出我对Telerik如何处理OData Enums的方向?

1 个答案:

答案 0 :(得分: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; 
}