2

Kann ein SharePoint-Experte mir die # in Daten erklären, die vom GetListItems() - Aufruf an den Lists-Webdienst zurückgegeben werden?SharePoint UserData und die # Syntax in zurückgegebenen Daten

Ich denke ich verstehe, was sie hier tun. Das # ist fast wie eine Syntax, um einen Kommentar zu machen ... oder noch besser, einschließlich der eigentlichen Daten (String) und nicht nur der ID. Auf diese Weise können Sie beide verwenden, aber sie sind in derselben Spalte gut miteinander verbunden.

Bin ich weg von der Basis? Ich kann den etwas anderen Gebrauch einfach nicht herausfinden. Zum Beispiel

 
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?* 

Kann jemand da draußen etwas Licht auf diesen Aspekt von SharePoint werfen?

Antwort

8

Die Zeichenfolge ;# wird von SharePoint-Suchfeldern, einschließlich Benutzerfeldern, als Trennzeichen verwendet. Wenn Sie mit dem Objektmodell arbeiten, können Sie SPFieldLookupValue und SPFieldUserValue verwenden, um die begrenzte Zeichenfolge in ein stark typisiertes Objekt zu konvertieren. Wenn Sie mit den Webdiensten arbeiten, müssen Sie die Zeichenfolge jedoch selbst parsen.

Sie haben Recht, dass der erste Teil eine Integer-ID: ID in der Site-Benutzerliste oder die ID des entsprechenden Elements in der Lookup-Liste ist. Der zweite Teil ist der Benutzername oder der Wert der Nachschlagespalte.


Nicolas merkt richtig, dass diese Trennzeichen auch für andere Verbundfeldwerte verwendet wird, einschließlich ...

  • SPFieldLookupValueCollection
  • SPFieldMultiColumnValue
  • SPFieldMultiChoiceValue
  • SPFieldUserValueCollection
+0

Diese Notation ist auch nützlich, wenn ein Feld speichert mehr als ein Element (in einem Multi-Select-Feld zum Beispiel) –

3

Der SPFieldUser erbt vom SPFieldLookup, der die Notation # verwendet. Sie können den Wert leicht analysieren, indem eine neue Instanz der SPFieldLookupValue Klasse erstellen:

string rawValue = "1;#value"; 
SPFieldLookupValue lookupValue = new SPFieldLookupValue(rawValue); 
string value = lookupValue.LookupValue; // returns value