Question

Bonjour et merci de votre visite!

Contexte

J'ai hérité d'un ancien projet .NET basé sur SharePoint 2007 et j'ai conçu une bibliothèque de base externe qui accède simplement aux données du SP, faisant ainsi du SP juste un backend. Oui, je sais qu'il serait préférable de migrer vers SQL, mais le client n'est pas d'accord.

Les développeurs précédents ont utilisé une méthode de lecture simple pour lire les données dans une liste de SP:

  SPList list = CurrentRootWeb.Lists["SomeListName"];

Ensuite, ils accèdent aux propriétés de la liste via un dictionnaire de sortes (c'est-à-dire pour chaque élément de la liste, récupérez l'élément ["SomeValue"]).

Je ne suis pas spécialisé dans SharePoint, donc je ne sais pas si c'est la manière la plus efficace d'accéder à ses données.

Problème

Comment lire les champs de recherche avec plusieurs valeurs dans SharePoint?

Chaque propriété demandée semble vouloir une chaîne en retour. Donc, item[SomeString] est correct, mais item[SomeList] rend tout barf! J'aurais pensé qu'une colonne de liste de recherche à valeurs multiples se présente sous la forme d'une chaîne sérialisée ou délimitée contenant les valeurs sélectionnées (exemple: "rouge; bleu; vert"). Que me manque-t-il?

Merci!

Était-ce utile?

La solution

Pour chacun des SPFields des champs de la liste, vous devez tester le Type du champ.

Si le type est SPFieldType.MultiChoice, vous transtypez le SPField en SPFieldChoice et accédez à la collection Choices, qui est un StringCollection.

Autres conseils

Si vous êtes spécifiquement intéressé par les champs LookUp avec plusieurs valeurs et pas seulement les feilds MultiChoice, le code suivant devrait vous aider:

item.Fields["LookFieldName"].Type == SPFieldType.Lookup;
SPFieldLookup LookUpField = item.Fields["LookFieldName"] as SPFieldLookup;
if (LookUpField.AllowMultipleValues)
{
    SPFieldLookupValueCollection valueCollection = item[Field.Id] as SPFieldLookupValueCollection;

    string[] arrLookupValues = (from SPFieldLookupValue val in valueCollection select val.LookupValue).ToArray<string>();


 }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top