SPFieldLookup.RelationshipDeleteBehavior-Eigenschaft
Ruft das Löschverhalten des Nachschlagefelds fest.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Property RelationshipDeleteBehavior As SPRelationshipDeleteBehavior
Get
Set
'Usage
Dim instance As SPFieldLookup
Dim value As SPRelationshipDeleteBehavior
value = instance.RelationshipDeleteBehavior
instance.RelationshipDeleteBehavior = value
public SPRelationshipDeleteBehavior RelationshipDeleteBehavior { get; set; }
Eigenschaftswert
Typ: Microsoft.SharePoint.SPRelationshipDeleteBehavior
Das Löschverhalten. Mögliche Werte sind Cascade, Restrict und None.
Ausnahmen
Ausnahme | Bedingung |
---|---|
SPException | Einen anderen Wert als None kann nicht festgelegt werden, wenn das Nachschlagefeld eine Websitespalte darstellt. |
Hinweise
Die RelationshipDeleteBehavior -Eigenschaft ermöglicht es erzwingen Sie referenzielle Integrität in der Beziehung zwischen zwei Listen, wenn eine Liste einer anderen Liste abhängt. Wenn ein Nachschlagefeld in der Liste der abhängigen die RelationshipDeleteBehavior -Eigenschaft auf Cascadefestgelegt ist, wird dann ein Element aus der Liste löschen alle zugehörigen abhängigen Listenelemente ebenfalls gelöscht werden. Nehmen wir z. B. an, Sie haben eine Kundenliste, die mit der Liste der Adressen von einem Suchfeld in der Liste der Adressen. Sie sollten das Löschen eines Elements aus dem Kunden dazu führen, dass alle zugehörigen Elemente von Adressen ebenfalls gelöscht werden. Sie könnten sich erreichen, indem die RelationshipDeleteBehavior -Eigenschaft des Nachschlagefelds in der Liste der Adressen auf Cascadefestlegen.
Festlegen der RelationshipDeleteBehavior -Eigenschaft auf Restrict wird verhindert, dass ein Element in der Quellliste gelöscht, wenn alle Elemente in der Liste der abhängigen zu suchen. Angenommen Sie, Ihre Kundenliste der Quelle für ein Nachschlagefeld in der Liste der ausstehenden Bestellungen ist. Sie möchten kein Element aus der Liste der Kunden gelöscht werden, wenn der Kunde noch nicht erledigten Aufträge. In diesem Fall könnten Sie die RelationshipDeleteBehavior -Eigenschaft für das Nachschlagefeld ausstehende Aufträge, um Restrictfestlegen.
Ein Nachschlagefeld, das erzwingt eine Einschränkung löschen muss indiziert sein. Legen Sie bevor die RelationshipDeleteBehavior -Eigenschaft auf Cascade oder Restrictzunächst die Indexed -Eigenschaft auf truefest.
Wichtig
Der Benutzer muss ManageLists auf die Quellliste Berechtigung um Cascade oder Restrictangeben. Weitere Informationen finden Sie unter der SPBasePermissions -Enumeration.
Sie können nicht zusätzlich eine Einschränkung löschen Wenn angeben:
-
Das Nachschlagefeld lässt mehrere Werte zu.
Stellen Sie vor dem Festlegen der RelationshipDeleteBehavior-Eigenschaft sicher, dass die AllowMultipleValues-Eigenschaft false zurückgibt.
-
Das Nachschlagefeld verweist auf eine Liste in einer anderen Website.
Überprüfen Sie den Wert der LookupWebId-Eigenschaft des Nachschlagefelds.
-
Die Anzahl von Elementen in der Liste übersteigt das für umfangreiche Listen festgelegte Maximum.
Vergleichen Sie den von der ItemCount-Eigenschaft der Liste zurückgegebenen Wert mit dem Wert, den die MaxItemsPerThrottledOperation-Eigenschaft der Webanwendung zurückgibt.
Der aktuelle Benutzer muss SPBasePermissionshaben.ManageLists -Berechtigung für die Zielliste, wenn diese Eigenschaft auf Restrictfestgelegt ist.
Beispiele
Im folgende Beispiel ist eine Konsolenanwendung, die eine Verknüpfung zwischen zwei Listen, Kunden und ausstehenden Bestellungen erstellt. Die Listen werden mithilfe von Feld-ID in der Liste Debitoren als Quelle für ein neues Kunden-ID-Feld in der Liste der ausstehenden Bestellungen verknüpft. Um zu verhindern, dass ein Kunden-Listenelement wird gelöscht, wenn sie alle ausstehenden Bestellungen Listenelemente sehen verfügt wird, die RelationshipDeleteBehavior -Eigenschaft für das neue Kunden-ID-Feld auf Restrictfestgelegt.
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