使用 OData 枚举作为字段过滤网格
Posted
技术标签:
【中文标题】使用 OData 枚举作为字段过滤网格【英文标题】:Filtering a grid with an OData Enum as a field 【发布时间】:2018-04-22 08:41:54 【问题描述】:我正在尝试使用枚举字段过滤网格数据源。
OData api 似乎已弃用/删除了在服务器端处理无前缀枚举的能力。
我将以下内容添加到网格的过滤器中。
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 枚举的方向?
【问题讨论】:
【参考方案1】:我使用这个例子来改变传输参数映射:
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;
【讨论】:
以上是关于使用 OData 枚举作为字段过滤网格的主要内容,如果未能解决你的问题,请参考以下文章
OData:通配符(startswith)过滤 url 请求中的数字(ID)字段
Angular 2 Kendo 网格不支持 odata v4
我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)