包含SPFieldLookup对象可以包含多个值的值。
继承层次结构
System.Object
System.Collections.Generic.List<SPFieldLookupValue>
Microsoft.SharePoint.SPFieldLookupValueCollection
命名空间: Microsoft.SharePoint
程序集: Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)
语法
声明
<SerializableAttribute> _
Public Class SPFieldLookupValueCollection _
Inherits List(Of SPFieldLookupValue) _
Implements ISerializable
用法
Dim instance As SPFieldLookupValueCollection
[SerializableAttribute]
public class SPFieldLookupValueCollection : List<SPFieldLookupValue>,
ISerializable
示例
下面的示例演示如何读取的多值查阅字段的值。该示例是控制台应用程序上的任务列表的项目进行迭代。该代码会考虑每个项目中的前置任务域,并打印该项目,每个前置任务的前置任务和标题数和任务的标题。
using System;
using Microsoft.SharePoint;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://localhost"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists.TryGetList("Tasks");
if (list != null)
{
foreach (SPListItem item in list.Items)
{
// Get the predecessors.
string rawvalue = item[SPBuiltInFieldId.Predecessors].ToString();
// Print information about the task.
SPFieldLookupValueCollection values = new SPFieldLookupValueCollection(rawvalue);
Console.WriteLine("\nTask {0}: {1}", item.ID, item.Title);
Console.WriteLine("\tPredecessors: {0}", values.Count);
// Print the predecessors.
foreach (SPFieldLookupValue value in values)
Console.WriteLine("\t{0} (Task {1})", value.LookupValue, value.LookupId);
}
}
}
}
Console.Write("\nPress ENTER to continue....");
Console.Read();
}
}
}
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using site As New SPSite("https://localhost")
Using web As SPWeb = site.OpenWeb()
Dim list As SPList = web.Lists.TryGetList("Tasks")
If list IsNot Nothing Then
For Each item As SPListItem In list.Items
' Get the predecessors.
Dim rawvalue As String = item(SPBuiltInFieldId.Predecessors).ToString()
' Print information about the task.
Dim values As New SPFieldLookupValueCollection(rawvalue)
Console.WriteLine(vbLf & "Task {0}: {1}", item.ID, item.Title)
Console.WriteLine(vbTab & "Predecessors: {0}", values.Count)
' Print the predecessors.
For Each value As SPFieldLookupValue In values
Console.WriteLine(vbTab & "{0} (Task {1})", value.LookupValue, value.LookupId)
Next
Next
End If
End Using
End Using
Console.Write(vbCrLf & "Press ENTER to continue....")
Console.Read()
End Sub
End Module
下面的示例演示如何编写多值查阅字段的值。该示例是查找问题列表的网站集的根网站中的一个控制台应用程序。如果没有找到问题列表,应用程序向列表中添加两个新项,并将每个项目中设置相关的项目字段的值。
using System;
using Microsoft.SharePoint;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://localhost"))
{
using (SPWeb web = site.RootWeb)
{
SPList list = null;
foreach (SPList webList in web.Lists)
{
if (webList.BaseType == SPBaseType.Issue)
{
list = webList;
break;
}
}
if (list != null)
{
SPListItemCollection items = list.Items;
SPFieldLookupValueCollection relatedItems = new SPFieldLookupValueCollection();
SPListItem firstItem = items.Add();
firstItem[SPBuiltInFieldId.Title] = "The first issue";
firstItem.Update();
SPFieldLookupValue firstLookupValue = new SPFieldLookupValue(firstItem.ID, firstItem.Title);
relatedItems.Add(firstLookupValue);
SPListItem secondItem = items.Add();
secondItem[SPBuiltInFieldId.Title] = "The second issue";
secondItem[SPBuiltInFieldId.RelatedIssues] = relatedItems.ToString();
secondItem.Update();
relatedItems.Remove(firstLookupValue);
relatedItems.Add(new SPFieldLookupValue(secondItem.ID, secondItem.Title));
firstItem[SPBuiltInFieldId.RelatedIssues] = relatedItems.ToString();
firstItem.Update();
}
}
}
}
}
}
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using site As New SPSite("https://localhost")
Using web As SPWeb = site.OpenWeb()
Dim list As SPList = Nothing
For Each webList As SPList In web.Lists
If webList.BaseType = SPBaseType.Issue Then
list = webList
Exit For
End If
Next
If list IsNot Nothing Then
Dim items As SPListItemCollection = list.Items
Dim relatedItems As New SPFieldLookupValueCollection()
Dim firstItem As SPListItem = items.Add()
firstItem(SPBuiltInFieldId.Title) = "The first issue"
firstItem.Update()
Dim firstLookupValue As New SPFieldLookupValue(firstItem.ID, firstItem.Title)
relatedItems.Add(firstLookupValue)
Dim secondItem As SPListItem = items.Add()
secondItem(SPBuiltInFieldId.Title) = "The second issue"
secondItem(SPBuiltInFieldId.RelatedIssues) = relatedItems.ToString()
secondItem.Update()
relatedItems.Remove(firstLookupValue)
relatedItems.Add(New SPFieldLookupValue(secondItem.ID, secondItem.Title))
firstItem(SPBuiltInFieldId.RelatedIssues) = relatedItems.ToString()
firstItem.Update()
End If
End Using
End Using
End Sub
End Module
线程安全性
该类型的任何公共 静态 (已共享 在 Visual Basic 中) 成员都是线程安全的。不保证任何实例成员都是线程安全的。