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


Свойство SPFieldLookup.RelationshipDeleteBehavior

Получает или задает поведение удаления поля подстановки.

Пространство имен:  Microsoft.SharePoint
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
Public Property RelationshipDeleteBehavior As SPRelationshipDeleteBehavior
    Get
    Set
'Применение
Dim instance As SPFieldLookup
Dim value As SPRelationshipDeleteBehavior

value = instance.RelationshipDeleteBehavior

instance.RelationshipDeleteBehavior = value
public SPRelationshipDeleteBehavior RelationshipDeleteBehavior { get; set; }

Значение свойства

Тип: Microsoft.SharePoint.SPRelationshipDeleteBehavior
Поведение удаления. Возможные значения включают Cascade, Restrict и None.

Исключения

Исключение Условие
SPException

Невозможно задать значение, отличное от None , если поле подстановок представляет столбец сайта.

Замечания

Включает свойство RelationshipDeleteBehavior можно усилить ссылочную целостность в отношения между двумя списками, когда один список зависит от другого списка. Если поле подстановок в списке зависимых RelationshipDeleteBehavior свойство имеет значение Cascade, затем удаление элемента из списка источник приводит всех связанных зависимых элементов списка также удаляются. Например предположим, что имеется список клиентов, относящихся к списку адресов, поля подстановки в списке адресов. Может потребоваться удаление элемента из клиентов вызвать из адресов удаляются также все связанные с ним элементы. Вы могли бы добиться, задав свойство RelationshipDeleteBehavior для поля подстановки в списке адресов, Cascade.

Для свойства RelationshipDeleteBehavior значение Restrict предотвращает элемент в списке источник удаляется, если все элементы в списке зависимых искать его. Например предположим, что ваш список клиентов является источником для поля подстановки в списке ожидающие заказы. Может потребоваться элемент из списка клиентов, чтобы удалить, если у клиента есть ожидающие заказы. В этом случае можно установить свойство RelationshipDeleteBehavior для поля подстановки в ожидающие заказы на Restrict.

Необходимо индексировать поля подстановки, которое обеспечивает ограничение удаления. Перед установкой RelationshipDeleteBehaviorCascade или Restrict, сначала присвойте свойству Indexed значение true.

Важно!

Пользователь должен иметь разрешение ManageLists в исходном списке, чтобы указать Cascade или Restrict. Дополнительные сведения содержатся в разделе перечисления SPBasePermissions .

Кроме того нельзя указать ограничение удаления, если:

  • Поле подстановки может содержать несколько значений.

    Прежде чем задать значение свойства RelationshipDeleteBehavior, убедитесь, что свойство AllowMultipleValues возвращает значение false.

  • Поле подстановки указывает на список в другой веб-узел.

    Проверьте значение свойства LookupWebId поля подстановки.

  • Число элементов в списке превышает максимальное значение для больших списков.

    Сравните значение, возвращаемое свойством ItemCount списка со значением, возвращаемым свойством MaxItemsPerThrottledOperation веб-приложения.

Текущий пользователь должен иметь SPBasePermissions.ManageLists разрешение на целевой список, если это свойство имеет значение Restrict.

Примеры

Следующий пример является консольным приложением, которое создает связь между двумя списками клиентов и ожидающие заказы. Эти списки связаны, используя поле «идентификатор» в списке клиентов в качестве источника для нового поля идентификатор клиента в списке ожидающие заказы. Чтобы предотвратить удаление Если пункты списка ожидающих заказов до поиска элемента списка клиентов, свойство RelationshipDeleteBehavior новое поле Customer ID имеет значение Restrict.

using System;
using Microsoft.SharePoint;

namespace RelatedLists
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite siteCollection = new SPSite("https://localhost"))
            {
                using (SPWeb site = siteCollection.OpenWeb())
                {
                    SPList lookupList = site.Lists.TryGetList("Customers");
                    SPList relatedList = site.Lists.TryGetList("Pending Orders");

                    if (lookupList != null && relatedList != null)
                    {
                        string strPrimaryCol = relatedList.Fields.AddLookup("Customer ID", lookupList.ID, true);
                        SPFieldLookup primaryCol = (SPFieldLookup)relatedList.Fields.GetFieldByInternalName(strPrimaryCol);

                        primaryCol.LookupField = lookupList.Fields["ID"].InternalName;
                        primaryCol.Indexed = true;
                        primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict;
                        primaryCol.Update();
                    }
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}
Imports System
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using siteCollection As New SPSite("https://localhost")
            Using site As SPWeb = siteCollection.OpenWeb()
                Dim lookupList As SPList = site.Lists.TryGetList("Customers")
                Dim relatedList As SPList = site.Lists.TryGetList("Pending Orders")

                If lookupList IsNot Nothing AndAlso relatedList IsNot Nothing Then
                    Dim strPrimaryCol As String = relatedList.Fields.AddLookup("Customer ID", lookupList.ID, True)
                    Dim primaryCol As SPFieldLookup = _
                        DirectCast(relatedList.Fields.GetFieldByInternalName(strPrimaryCol), SPFieldLookup)

                    primaryCol.LookupField = lookupList.Fields("ID").InternalName
                    primaryCol.Indexed = True
                    primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict
                    primaryCol.Update()
                End If
            End Using
        End Using
        Console.Write(vbLf & "Press ENTER to continue...")
        Console.ReadLine()
    End Sub
End Module

См. также

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

SPFieldLookup класс

Элементы SPFieldLookup

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

Indexed

AllowMultipleValues