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枚举。 此外,如果您无法指定删除约束:
|
当前用户必须具有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