在项目中,经常会涉及列表或者文档库之间的相互引用,而这个时候我们用的更多的就是查阅项(lookup),以前没有去关注取值或者赋值的问题,今天正好碰到一个Case,就顺道总结一下。我们知道链接和图片的字段我们通过SPLinkFieldValue取值,那么查阅项通过什么来取值呢?答案是:SPFieldLookupValueCollection或者SPFieldLookupValue,为什么会有两种类型呢?起源是在添加查阅项字段时,是否选择了“允许多值”。一旦允许多值,就必须的通过SPFieldLookupValueCollection来做,以下是我整理的代码,仅供记录:
SPFieldLookup fieldLookup =(SPFieldLookup)list.Fields[_DisplayName];
if (fieldLookup.GetFieldValue(item[_ColName].ToString()).GetType().Name == "SPFieldLookupValueCollection")
{
SPFieldLookupValueCollection projects =
(SPFieldLookupValueCollection)fieldLookup.GetFieldValue(item[_ColName].ToString());
foreach (SPFieldLookupValue lookupValue in projects)
{
//lookupValue.LookupValue;
//lookupValue.LookupId.ToString();
}
}
else
{
SPFieldLookupValue projects =
(SPFieldLookupValue)fieldLookup.GetFieldValue(item[_ColName].ToString());
//projects.LookupValue;
//projects.LookupId.ToString();
}