Пользовательские данные SharePoint и синтаксис ;# в возвращаемых данных

StackOverflow https://stackoverflow.com/questions/1359735

Вопрос

Может ли эксперт по SharePoint объяснить мне ;# в данных, возвращаемых вызовом GetListItems() веб-службы списков?

Кажется, я понимаю, что они здесь делают.;# почти похож на синтаксис для комментариев...или еще лучше, включая фактические данные (строку), а не только идентификатор.Таким образом, вы можете использовать любой из них, но они хорошо сочетаются в одном столбце.

Я далеко от базы?Я просто не могу понять немного другое использование.Например

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

Может ли кто-нибудь пролить свет на этот аспект SharePoint?

Это было полезно?

Решение

Строка ;# используется в качестве разделителя в полях поиска SharePoint, включая пользовательские поля.При работе с объектной моделью вы можете использовать SPFieldLookupValue и SPFieldUserValue для преобразования строки с разделителями в строго типизированный объект.Однако я считаю, что при работе с веб-сервисами вам придется анализировать строку самостоятельно.

Вы правы, первая часть представляет собой целочисленный идентификатор:Идентификатор в списке пользователей сайта или идентификатор соответствующего элемента в списке поиска.Вторая часть — это имя пользователя или значение столбца поиска.


Николас правильно отмечает, что этот разделитель также используется для других значений составного поля, в том числе...

  • SPFieldLookupValueCollection
  • SPFieldMultiColumnValue
  • SPFieldMultiChoiceValue
  • SPFieldUserValueCollection

Другие советы

SPFieldUser наследует SPFieldLookup, который использует нотацию ;#.Вы можете легко проанализировать значение, создав новый экземпляр класса SPFieldLookupValue:

string rawValue = "1;#value";
SPFieldLookupValue lookupValue = new SPFieldLookupValue(rawValue);
string value = lookupValue.LookupValue; // returns value
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top