SharePoint UserData e; # Sintassi nei dati restituiti
-
20-09-2019 - |
Domanda
Può un esperto di SharePoint spiegare a me il;? # Nei dati restituiti dalle GetListItems () chiamata per il servizio di elenchi web
Credo di capire quello che stanno facendo qui. L'; # è quasi come una sintassi per fare un commento ... o meglio ancora, tra cui i dati reali (stringa) e non solo l'ID. In questo modo è possibile utilizzare, ma sono ben accoppiati insieme nella stessa colonna.
Sono io fuori strada? Non riesco proprio a capire l'uso leggermente diverso. Ad esempio
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?*
Può qualcuno là fuori po 'di luce su questo aspetto di SharePoint?
Soluzione
Il ;#
stringa viene utilizzato come delimitatore da campi di ricerca di SharePoint, tra cui campi utente. Quando si lavora con il modello a oggetti, è possibile utilizzare SPFieldLookupValue
e SPFieldUserValue
per convertire la stringa delimitata in un oggetto fortemente tipizzato. Quando si lavora con i servizi web, però, credo che sarà necessario analizzare la stringa da soli.
Lei ha ragione che la prima parte è un ID intero: ID nell'elenco degli utenti del sito, o l'ID della voce corrispondente nella lista di ricerca. La seconda parte è il nome utente o il valore della colonna di ricerca.
Nicolas osserva giustamente che questo delimitatore viene utilizzato anche per altri valori di campo compositi, tra cui ...
- SPFieldLookupValueCollection
- SPFieldMultiColumnValue
- SPFieldMultiChoiceValue
- SPFieldUserValueCollection
Altri suggerimenti
Lo SPFieldUser eredita dalla SPFieldLookup che usa il; # notazione. Si può facilmente analizzare il valore mediante la creazione di una nuova istanza della classe SPFieldLookupValue:
string rawValue = "1;#value";
SPFieldLookupValue lookupValue = new SPFieldLookupValue(rawValue);
string value = lookupValue.LookupValue; // returns value