从SharePoint ListItem数据中删除“;#”

时间:2009-05-27 00:48:45

标签: sharepoint sharepoint-2007 sharepoint-api

在SharePoint中,许多字段的id-value对的格式如下所示; #value。对于多重查找等字段,这一点更加复杂,在提取该字段的值时,可以产生类似id_1;#value_1;#id_2;#value_2;#id_3;#value_3

的结果

我想知道是否有任何已知的内置函数可以简化此过程,并至少从值中删除ID。

2 个答案:

答案 0 :(得分:2)

字段值对象在Sharepoint数据库中存储为字符串。对于简单值(例如“Hello world”),这很简单。但是对于复杂的字段值 - 例如ID /值对,如何将整个值存储为单个字符串显然也更复杂。 Sharepoint中的每个字段值类都负责其自己的存储实现。 ToString()负责编写值的字符串表示形式;而字段值的构造函数接受一个字符串,并负责解析并适当地设置自身的所有属性。

例如,SPFieldUrlValue(代表<a href="url">description</a>)具有Url和Description属性。创建新的SPFieldUrlValue(string fieldValue)对象将解析该值并相应地设置属性。

为了获得字段值的真实/正确(通常是强类型!)表示,您必须知道该字段的类型以及该字段的值类是什么。

答案 1 :(得分:2)

SPField class has many derived classed

例如假设一个Lookup字段类型(使用ID; #value),您可以检查SPField.Type == SPFieldType.Lookup,然后将SPField强制转换为SPFieldLookup并使用其overriden方法获取记录价值。

有关详细信息,请参阅Custom Field Value Classes

另外 - 如果我没记错的话(我现在无法检查这个DYOR)你可以在基础SPField对象上调用.ValueAsText和.ValueAsHtml,它将从值中删除ID;#。