2017-07-24 34 views
3

我没有尝试使用角度2 kendo网格与odata v4进行服务器端过滤,但它显示'包含'关键字不支持。使用“substringof”而不是“包含”新版本我怎样才能解决这个问题Angular 2剑道网格不支持odata v4

+0

你有没有找到解决方案呢?我面临着同样的问题... – Andrew

+0

是的,其实我使用的不是V4的错误版本,也检查了Web ApiConfig –

回答

0

安装的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(); 
     } 

    } 
0

我们使用的OData V3。

我所做的是我的正则表达式查询字符串,如果它有一个包含(),然后用substringof()

这里替换它是一个例子:

let queryString = toODataString(state); 
    const regex = /(contains(([^)]+)\)))/; 
    queryString = _.replace(queryString, regex, `substringof('${filter.value}', ${filter.field})`); 

我使用lodash在这里,但我也应该使用string.replace功能