在项目中,经常会涉及列表或者文档库之间的相互引用,而这个时候我们用的更多的就是查阅项(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();
            }   
05-21 05:10