Поделиться через


Класс 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) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.

См. также

Справочные материалы

Элементы SPFieldLookupValueCollection

Пространство имен Microsoft.SharePoint