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