2017-07-24 32 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功能