Angular 2 Kendo 网格不支持 odata v4
Posted
技术标签:
【中文标题】Angular 2 Kendo 网格不支持 odata v4【英文标题】:Angular 2 Kendo grid not supporting odata v4 【发布时间】:2017-12-29 20:01:19 【问题描述】:我确实尝试使用带有 odata v4 的 angular 2 kendo 网格进行服务器端过滤,但它显示不支持“包含”关键字。新版本使用 'substringof' 而不是 'contains' 我该如何解决这个问题
【问题讨论】:
您找到解决方案了吗?我也面临同样的问题... 是的,实际上我使用了错误的版本而不是 V4 并且还检查了 Web ApiConfig 【参考方案1】:安装Odata V4并配置WebApiConfig.cs
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
var customer = builder.EntitySet<CustomerModel>("CustomerSearch");
config.Routes.MapODataServiceRoute(
routeName: "odata",
routePrefix: "odata",
model: builder.GetEdmModel());
'CustomerModel' 是我要返回的模型 “CustomerSearch”控制器名称
Odata 控制器
[EnableQuery]
public class CustomerSearchController : ODataController
[EnableQuery]
public IQueryable<CustomerModel> Get()
CustomerModelResponse list = new CustomerModelResponse();
try
list = CustomerBL.GetCustomer(0);
catch (Exception)
throw;
return list.CustomerList.AsQueryable();
【讨论】:
【参考方案2】:我们使用 OData v3。
我所做的是我正则表达式 queryString 如果它有一个 contains() 然后用 substringof() 替换它
这是一个例子:
let queryString = toODataString(state);
const regex = /(contains(([^)]+)\)))/;
queryString = _.replace(queryString, regex, `substringof('$filter.value', $filter.field)`);
我在这里使用 lodash,但我也应该使用 string.replace 函数
【讨论】:
以上是关于Angular 2 Kendo 网格不支持 odata v4的主要内容,如果未能解决你的问题,请参考以下文章
在 Kendo UI Chart Angular 2 中隐藏网格线
如何根据 Kendo-Angular2-grid 中的数据自动调整网格列的大小?