2009-05-27 3 views
1

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

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

ответ

2

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

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

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

2

SPField class has many derived classed

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

См Custom Field Value Classes для более подробной информации

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

Смежные вопросы