2016-09-12 1 views
0

i ai Kendo Grille ui Dans mon projet (côté client) et dans ma grille filtrables et triables et ... est vrai et mis sur le fonctionnement Serversidekendo ui ToDataSourceResult support mongodb C# pilote

mais ma base de données est MongoDB et maintenant, quand dans mon jeu utilisateur client filtre j'ai obtenu cette erreur

Une exception du type « System.InvalidOperationException » a eu lieu en MongoDB.Driver.dll mais n'a pas été traitée dans le code utilisateur informations complémentaires: Comparer ({document } {Nom} .ToLower(), "test") n'est pas supporté.

parce que j'utilise WebAPI i Créer ma propre DataSourceRequest classe sans héritage quand je veux convertir ma propre classe à DataSourceRequest avec cette méthode (pour filtrables)

if (model.Filter != null && model.Filter.Filters.Count > 0) 
     { 
      var filters = new FilterDescriptorCollection(); 

      foreach (var f in model.Filter.Filters) 
      { 
       FilterDescriptor filter = new FilterDescriptor() 
       { 
        Member = f.Field, 
        Operator =(FilterOperator)f.Operator, 
        Value = f.Value 
       }; 
       filters.Add(filter); 
      } 

      request.Filters = filters; 
     } 

ce mon dépôt

var result = _context.Additives.AsQueryable().Select(a => new AdditiveList() 
     { 
      Id = a.Id.DbId, 
      Name = a.Name, 
      CurrentWeight = a.CurrentWeight, 
      InitialWeight = a.InitialWeight 
     }).ToDataSourceResult(model.ToDataSourceRequest()); 

maintenant j'ai cette question j'avais tort pour le filtre Création? ou kendo ne supporte pas l'opération mongo et je dois écrire cela pour moi-même?

tnks

+1

Que pensez-vous de 'Compare ({document} {Name} .ToLower()," test ")'? Pourriez-vous mettre ce bloc de code dans votre projet incluez cette partie ('Comparer ({document} {Nom} .ToLower()," test ")' dans votre question? – RAM

+0

ce bloc créé par kendo ui (ToDataSourceResult) I Ajouter un dépôt Code –

+0

Avez-vous une valeur de 'name' avec la valeur' NULL' dans le champ 'Additives'? Essayez de remplir toutes les valeurs du champ' name' avec des données nulles encore et testez à nouveau.Voyez-vous l'erreur après avoir appliqué ces changements? – RAM

Répondre

0

je trouve mon problème dans ma classe de filtre (modèle) j'ai un ENUM et mon ENUM a mauvaise valeur je change ENUM à ces valeurs

public enum MyFilterOperator 
{ 
    Lt, 
    Lte, 
    Eq, 
    Neq, 
    Gte, 
    Gt, 
    Startswith, 
    Endswith, 
    Contains, 
    IsContainedIn, 
    Notsubstringof, 
    IsNull, 
    IsNotNull, 
    IsEmpty, 
    IsNotEmpty 
} 

et maintenant toutes les choses fonctionne correctement