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,然后从来源列表中删除项目使所有相关的相关列表项也被删除。例如,假设必须在地址列表中的查阅字段的地址列表相关的客户列表。您可能需要从客户能够导致从地址以及要删除的所有相关的项中删除项目。您可以通过设置Cascade到地址列表中的查阅字段的RelationshipDeleteBehavior属性来完成的。

将RelationshipDeleteBehavior属性设置为Restrict可防止源列表中的项如果相关列表中的任何项查找到该删除。例如,假设您的客户列表是在待处理订单列表的查阅字段的源。您可能不希望被删除,如果客户有待定订单的客户列表中的项。在这种情况下,您可以设置查阅字段的RelationshipDeleteBehavior属性在待处理订单到Restrict中。

强制删除约束的查阅字段必须被编入索引。在将RelationshipDeleteBehavior属性设置为Cascade或Restrict之前, 首先将Indexed属性设置为true。

重要信息注释重要信息

要指定Cascade或Restrict,用户必须在源列表具有ManageLists权限。有关详细信息,请参阅SPBasePermissions枚举。

此外,如果您无法指定删除约束:

  • 查阅字段允许多个值。

    在设置 RelationshipDeleteBehavior 属性之前,请确保 AllowMultipleValues 属性返回 false。

  • 查阅字段指向另一个网站中的列表。

    检查查阅字段的 LookupWebId 属性的值。

  • 列表中的项数超过为目标列表设置的最大值。

    将列表的 ItemCount 属性返回的值与 Web 应用程序的 MaxItemsPerThrottledOperation 属性返回的值进行比较。

当前用户必须具有SPBasePermissions。ManageLists当此属性设置为Restrict的目标列表上的权限。

示例

下面的示例是一个控制台应用程序创建两个列表,客户和待处理订单之间的链接。待处理订单列表中的新客户 ID 字段作为源使用标识号域中的客户列表,列表已链接。为了防止客户列表项是否达查找任何待处理订单列表项删除它,新的客户 ID 字段的RelationshipDeleteBehavior属性设置为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