SharePoint UserData et; # Syntaxe des données retournées
-
20-09-2019 - |
Question
un expert SharePoint peut me expliquer la;? # Dans les données renvoyées par les GetListItems () pour les listes de service Web
Je pense que je comprends ce qu'ils font ici. Le; # est presque comme une syntaxe pour faire un commentaire ... ou mieux encore, y compris les données réelles (chaîne) et non seulement l'ID. De cette façon, vous pouvez utiliser, mais ils sont bien appariés dans la même colonne.
Suis-je la base loin? Je ne peux pas comprendre l'utilisation slighly différente. Par exemple
I have a list with: ows_Author 658;#Tyndall, Bruno *in this case the 658 seems to be an ID for me in a users table somewhere* ows_CreatedDate (note: a custom field. not ows_Created) 571;#2009-08-31 23:41:58 *in this case the 571 seems to be an ID of the row I'm already in. Why the repetition?*
Quelqu'un peut-il jeter là un peu de lumière sur cet aspect de SharePoint?
La solution
La ;#
chaîne est utilisé comme séparateur par les champs de recherche de SharePoint, y compris les champs utilisateur. Lorsque vous travaillez avec le modèle d'objet, vous pouvez utiliser SPFieldLookupValue
et SPFieldUserValue
pour convertir la chaîne délimitée dans un objet fortement typé. Lorsque vous travaillez avec les services Web, cependant, je crois que vous aurez besoin d'analyser la chaîne vous-même.
Vous avez raison que la première partie est un nombre entier ID: ID dans le site liste d'utilisateurs, ou ID de l'élément correspondant dans la liste de référence. La deuxième partie est le nom d'utilisateur ou de la valeur de la colonne de recherche.
Nicolas fait remarquer à juste titre que ce délimiteur est également utilisé pour d'autres valeurs de champ composites, y compris ...
- SPFieldLookupValueCollection
- SPFieldMultiColumnValue
- SPFieldMultiChoiceValue
- SPFieldUserValueCollection
Autres conseils
Le SPFieldUser hérite de la SPFieldLookup qui utilise la, la notation #. Vous pouvez facilement analyser la valeur en créant une nouvelle instance de la classe SPFieldLookupValue:
string rawValue = "1;#value";
SPFieldLookupValue lookupValue = new SPFieldLookupValue(rawValue);
string value = lookupValue.LookupValue; // returns value