SharePoint UserData e a sintaxe;# nos dados retornados
-
20-09-2019 - |
Pergunta
Um especialista em SharePoint pode me explicar o;# nos dados retornados pela chamada getListItems () para o serviço da web listas?
Acho que entendo o que eles estão fazendo aqui. O# é quase como uma sintaxe para fazer um comentário ... ou melhor ainda, incluindo os dados reais (string) e não apenas o ID. Dessa forma, você pode usar, mas eles são bem emparelhados na mesma coluna.
Estou muito fora da base? Eu simplesmente não consigo descobrir o uso com brilho e com brilho. Por exemplo
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?*
Alguém por aí pode lançar alguma luz sobre esse aspecto do SharePoint?
Solução
A corda ;#
é usado como um delimitador pelos campos de pesquisa do SharePoint, incluindo campos de usuário. Ao trabalhar com o modelo de objeto, você pode usar SPFieldLookupValue
e SPFieldUserValue
Para converter a sequência delimitada em um objeto fortemente tipado. Ao trabalhar com os Serviços da Web, no entanto, acredito que você precisará analisar a string.
Você está certo de que a primeira parte é um ID inteiro: ID na lista de usuários do site ou ID do item correspondente na lista de pesquisa. A segunda parte é o nome de usuário ou o valor da coluna de pesquisa.
Nicolas observa corretamente que esse delimitador também é usado para outros valores de campo composto, incluindo ...
- SPFIELLELKOUPVALUECOLECTION
- SpfieldmulticolumnValue
- SpfieldmultichoiceValue
- SpfieldUservaluecollection
Outras dicas
O Spfielduser herda do SPFieldLookup que usa a notação;#. Você pode analisar facilmente o valor criando uma nova instância da classe SpfieldLookupValue:
string rawValue = "1;#value";
SPFieldLookupValue lookupValue = new SPFieldLookupValue(rawValue);
string value = lookupValue.LookupValue; // returns value