Пользовательские данные SharePoint и синтаксис ;# в возвращаемых данных
-
20-09-2019 - |
Вопрос
Может ли эксперт по 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