Класс SPFieldLookupValueCollection
Содержит значения для объекта 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
Потокобезопасность
Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.