Comment puis-je filtrer en fonction des champs Choix lors de l'utilisation ListData.svc dans SharePoint 2010?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/14482

  •  16-10-2019
  •  | 
  •  

Question

J'ai une liste que je suis en train de requête à l'aide ListData.svc. Je suis en train de retirer les dossiers dans une plage de dates et avec une valeur particulière d'un champ Choix vérifié. Si j'utilise Lists.asmx, je peux construire la requête CAML pour retirer les dossiers dont j'ai besoin, mais je veux utiliser ListData.svc pour cette soliton. Je suis en mesure de filtrer sur des colonnes dont les valeurs sont stockées dans la liste et je suis en utilisant « $ élargir » pour retirer les données pour mon champ Choix, mais je ne sais pas comment structurer l'URI OData de filtre basé sur le choix champ.

J'essaie une requête comme ceci:

http://tssites/departments/appdev/_vti_bin/ListData.svc/TeamCalendar?$expand=Flags&$filter=Flags eq 'PTO'

L'erreur que je suis en train de revenir est:

Opérateur 'eq' incompatible avec des types d'opérandes System.Collections.Generic.IEnumerable`1 [[Microsoft.SharePoint.Linq.DataServiceEntity, Microsoft.SharePoint.Linq, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c ]] » et 'System.String' à la position 6.

Merci pour votre aide.

Était-ce utile?

La solution

Il n'a pas été prise en charge pour les champs multiselect (à savoir les champs représentés dans l'interface utilisateur normale cases à cocher). La citation suivante est pour 2013, mais les mêmes règles pour la ListData.svc. Vous pouvez filtrer sur le côté client, bien que, selon la façon dont vous représentez les données et les commandes que vous utilisez.

Requêtes pour champs de recherche à valeurs multiples et les utilisateurs

Parce que les champs de recherche à valeurs multiples sont retournées comme une chaîne de valeurs multiples, il n'y a aucun moyen de requête pour eux (par exemple, l'équivalent d'un Comprend élément ou élément NotIncludes n'est pas pris en charge).

http://msdn.microsoft.com /en-us/library/fp142385(v=office.15).aspx

Autres conseils

champs de sélection sont retournés avec une valeur sans la nécessité d'une extension:

Exemple: IP_WorkflowStatus = IP_WorkflowStatusValue

Voici un exemple d'une requête sans utiliser l'expansion:

$filter=IP_WorkflowStatusValue eq '2-Validated'

Si vous voulez utiliser l'expansion, alors vous devez utiliser la notation champ élargi Relation / Champ:

$filter=IP_WorkflowStatus/Value eq '2-Validated'&$expand=IP_WorkflowStatus

Récupérer la valeur du champ choix dans l'API Rest en attachant la « valeur » au nom du champ. par exemple pour si votre nom de domaine est Drapeaux, utilisez le terme FlagsValue dans la chaîne de filtre. Cela fonctionne si le champ de choix n'est pas un champ de sélection multiple.

Votre URL doit être comme

http: //tssites/departments/appdev/_vti_bin/ListData.svc / TeamCalendar ? $ expand = Drapeaux & $ filter = FlagsValue eq 'PDF'

Il y a un autre travail autour de cette question. Créer une colonne calculée et ajoutez le champ Choix comme formule pour cela. Maintenant, en utilisant la colonne calculée pour le filtrage.

Pour les champs Multiselect choix:

Suivez les étapes ci-dessous.

  1. Ajouter une nouvelle colonne de texte par nom FlagsCSV
  2. Modifier la EditForm de l'élément de la liste et ajouter un composant WebPart du contenu. Accrochez une page html à l'webpart contenu. (Laissez le nom de la page html être content.html et télécharger ce aux bibliothèques comme SiteAssests)
  3. Modifier la content.html et l'utilisation jquery pour ajouter un événement de changement aux options de drapeaux. Générer des valeurs séparées par des virgules des éléments multiples options sélectionnées drapeau et réglez-le sur la zone de texte de FlagsCSV.
  4. Enregistrer et fermer la page html. Maintenant, chaque fois que vous modifiez l'élément de liste, FlagsCSV aussi est mis à jour.
  5. Vous pouvez utiliser le champ FlagsCSV pour votre filtrage plus tard dans l'appel de repos.

Simple .. Si vous souhaitez filtrer un champ de choix avec le nom « couleur » juste donner comme ceci:

$ filter = colorValue eq 'bleu' & $ expand = couleur

Juste valeur avec le nom append de colonne. ici colorValue

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top