2

Un expert SharePoint peut-il m'expliquer les # données renvoyées par l'appel GetListItems() au service Web Listes? 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 pas seulement l'ID. De cette façon, vous pouvez utiliser l'un ou l'autre, mais ils sont bien appariés dans la même colonne.SharePoint UserData et la syntaxe; # dans les données renvoyées

Suis-je loin de la base? Je ne peux pas comprendre l'utilisation légèrement 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 faire la lumière sur cet aspect de SharePoint?

Répondre

8

La chaîne ;# est utilisée comme délimiteur par les champs de recherche de SharePoint, y compris les champs utilisateur. Lorsque vous travaillez avec le modèle objet, vous pouvez utiliser SPFieldLookupValue et SPFieldUserValue pour convertir la chaîne délimitée en un objet fortement typé. Lorsque vous travaillez avec les services Web, cependant, je crois que vous devrez analyser la chaîne vous-même.

Vous avez raison: la première partie est un ID entier: ID dans la liste des utilisateurs du site, ou l'ID de l'élément correspondant dans la liste de recherche. La deuxième partie est le nom d'utilisateur ou la valeur de la colonne de recherche.


Nicolas note à juste titre que ce délimiteur est également utilisé pour d'autres valeurs de champ composites, y compris ...

  • SPFieldLookupValueCollection
  • SPFieldMultiColumnValue
  • SPFieldMultiChoiceValue
  • SPFieldUserValueCollection
+0

Cette notation est également utile quand un champ stocke plus d'un item (dans un champ à plusieurs choix, par exemple) –

3

SPFieldUser hérite de SPFieldLookup qui utilise 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 
Questions connexes