SPFieldLookup.RelationshipDeleteBehavior property
取得或設定查詢欄位的 「 刪除 」 行為。
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'宣告
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; }
Property value
Type: Microsoft.SharePoint.SPRelationshipDeleteBehavior
「 刪除 」 行為。可能值包括Cascade、 Restrict和None。
Exceptions
Exception | Condition |
---|---|
SPException | 如果 [查詢] 欄位代表網站欄,您不能設定None以外的值。 |
備註
RelationshipDeleteBehavior屬性可讓您強制在兩個清單,當一份清單取決於另一份清單之間的關聯性的參考完整性。如果相依的清單中的 [查詢] 欄位設定為Cascade的RelationshipDeleteBehavior屬性,然後從 [來源] 清單中刪除項目會導致所有相關的相關清單項目也一併刪除。例如,假設您有相關的地址清單的客戶清單的地址清單中的 [查詢] 欄位。您可能想讓所有相關的項目從也被刪除的地址的客戶從刪除項目。您可以藉由設定Cascade地址清單中的 [查詢] 欄位的 [ RelationshipDeleteBehavior ] 屬性來完成該作業。
將RelationshipDeleteBehavior屬性設定為Restrict ,可防止 [來源] 清單中的項目相依的清單中的任何項目查詢,如果刪除。例如,假設您的客戶清單中是暫止的訂單清單中的 [查詢] 欄位的來源。您可能不想從客戶清單如果待處理的訂單的客戶有刪除的項目。在這種情況下,您可以設定 [查詢] 欄位的 [ RelationshipDeleteBehavior ] 屬性中暫止的訂單的Restrict。
[查詢] 欄位,可強制刪除條件約束必須編製索引。之前RelationshipDeleteBehavior屬性設定為Cascade或Restrict,第一次設定Indexed屬性為true。
重要
使用者必須具有 [來源] 清單上ManageLists權限,才能指定Cascade或Restrict。如需詳細資訊,請參閱SPBasePermissions列舉型別。
此外,您不能指定刪除條件約束,如果:
-
[查詢] 欄位可讓多個值。
之前設定RelationshipDeleteBehavior屬性時,請務必AllowMultipleValues屬性會傳回false。
-
[查詢] 欄位會指向另一個網站中的清單。
請檢查 [查詢] 欄位的LookupWebId屬性的值。
-
在清單中的項目數超過設定的大型清單的最大值。
Web 應用程式的MaxItemsPerThrottledOperation屬性所傳回的值清單的ItemCount屬性所傳回的值相比較。
目前的使用者必須具有SPBasePermissions。當這個屬性設定為Restrict中的 [目標] 清單上的ManageLists使用權限。
Examples
下列範例是一個主控台應用程式,會建立兩個清單,[客戶] 和 [暫止的訂單之間的連結。藉由使用新的 [客戶編號] 欄位中的暫止的訂單清單做為來源客戶清單中的 [識別碼] 欄位已連結清單。若要防止客戶的清單項目有最多可尋找任何暫止的訂單清單項目被刪除,新的 [客戶識別碼] 欄位的 [ 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