2017-07-24 1 views
3

J'ai essayé le filtrage côté serveur en utilisant une grille angulaire de 2 kendo avec odata v4 mais en montrant que le mot clé 'contains' ne supporte pas. nouvelle version en utilisant « substringof » au lieu de « contient » comment puis-je résoudre ce problèmeAngulaire 2 Grille de Kendo ne supportant pas odata v4

+0

Avez-vous trouvé une solution à ce sujet? Je suis confronté au même problème ... – Andrew

+0

Oui en fait, j'utilisais une mauvaise version, pas V4 et je vérifiais aussi le Web ApiConfig –

Répondre

0

V4 et OData Installer configurer WebApiConfig.cs

ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); 
       var customer = builder.EntitySet<CustomerModel>("CustomerSearch"); 

       config.Routes.MapODataServiceRoute(
        routeName: "odata", 
        routePrefix: "odata", 
        model: builder.GetEdmModel()); 

« CustomerModel » est mon modèle pour revenir nom du contrôleur « CustomerSearch »

OData contrôleur

[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

Nous utilisons OData v3.

Ce que je l'ai fait est que je regex le queryString si elle a un contient(), puis le remplacer par substringof()

est un exemple:

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

J'utilise lodash ici, mais je devrais aussi travailler avec la fonction de string.replace