Удаление '; #' из данных SharePoint ListItem

В SharePoint многие пары полей "идентификатор-значение" имеют формат, подобный следующему идентификатору: # значение. Это еще больше усложняется с такими полями, как множественный поиск, где при извлечении значения этого поля могут быть получены такие результаты, как id_1; # value_1; # id_2; # value_2; # id_3; # value_3

Мне интересно, есть ли какая-либо известная встроенная функция, которая упростит этот процесс и, по крайней мере, удалит идентификаторы из значения.


person Richard McGuire    schedule 27.05.2009    source источник


Ответы (2)


Объекты значений полей хранятся в виде строк в базе данных Sharepoint. Для простых значений (например, «Hello world») это достаточно просто. Но для сложных значений поля, таких как пара ID / значение, как сохранить все значение в виде одной строки, очевидно, также более сложно. Каждый класс значений поля в Sharepoint отвечает за собственную реализацию хранилища. ToString() отвечает за запись строкового представления значения; в то время как конструктор значения поля принимает строку и отвечает за ее синтаксический анализ и соответствующую установку всех свойств для себя.

Например, SPFieldUrlValue (который представляет <a href="url">description</a>) имеет свойства Url и Description. Создание нового объекта SPFieldUrlValue(string fieldValue) проанализирует значение и установит свойства соответственно.

Чтобы получить истинное / правильное (и часто строго типизированное!) Представление значения поля, вы должны знать, к какому типу относится поле и каков класс значений этого поля.

person Rex M    schedule 27.05.2009

Класс SPField имеет много производных классов

Например, предполагая тип поля поиска (который использует идентификатор; #value), вы можете проверить SPField.Type == SPFieldType.Lookup, а затем приведите SPField к SPFieldLookup и используйте его методы переопределения, чтобы получить значение записи.

Дополнительные сведения см. В Классах значений настраиваемых полей.

Также - если я правильно помню (я не могу это проверить прямо сейчас, поэтому DYOR), вы можете вызвать .ValueAsText и .ValueAsHtml для базового объекта SPField, и он удалит ID; # из значений.

person Ryan    schedule 26.06.2009