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

Siehe auch

Referenz

SPFieldLookup Klasse

SPFieldLookup-Member

Microsoft.SharePoint-Namespace

Indexed

AllowMultipleValues