以OData枚举作为字段筛选网格



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

ODataapi似乎已经弃用/删除了在服务器端使用无前缀枚举的能力。

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

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

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

我设置了自己的过滤器解析器,它运行良好,但随着网格中添加了新的过滤选项,我真的需要一个合适的解决方案。

那么,有人能告诉我如何处理Telerik集成的OData枚举吗?

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

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; 
}

最新更新