Свойство 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