SPFieldLookup.RelationshipDeleteBehavior - Propriété

Obtient ou définit le comportement de la suppression du champ liste de choix.

Espace de noms :  Microsoft.SharePoint
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Public Property RelationshipDeleteBehavior As SPRelationshipDeleteBehavior
    Get
    Set
'Utilisation
Dim instance As SPFieldLookup
Dim value As SPRelationshipDeleteBehavior

value = instance.RelationshipDeleteBehavior

instance.RelationshipDeleteBehavior = value
public SPRelationshipDeleteBehavior RelationshipDeleteBehavior { get; set; }

Valeur de propriété

Type : Microsoft.SharePoint.SPRelationshipDeleteBehavior
Le comportement de suppression. Les valeurs possibles sont Cascade, Restrict et None.

Exceptions

Exception Condition
SPException

Vous ne pouvez pas définir une valeur différente de None si le champ de recherche représente une colonne de site.

Remarques

La propriété RelationshipDeleteBehavior permet de vous mettre en œuvre l'intégrité référentielle de la relation entre deux listes lorsqu'une seule liste dépend d'une autre liste. Si la propriété RelationshipDeleteBehavior la valeur Cascadeun champ liste de choix dans la liste dépendante, puis en supprimant un élément de la liste source entraîne tous les éléments de liste dépendante associée aussi supprimées. Par exemple, supposons que vous avez une liste de clients est liée à une liste d'adresses en un champ liste de choix dans la liste d'adresses. Vous pouvez décider de la suppression d'un élément à partir des clients pour tous les éléments associés à partir d'adresses à supprimer ainsi. Vous a pu accomplir cela en définissant la propriété RelationshipDeleteBehavior du champ liste de choix dans la liste d'adresses à Cascade.

Définissant la propriété RelationshipDeleteBehavior sur Restrict empêche un élément dans la liste source d'être supprimé si tous les éléments de la liste dépendante chercher à celui-ci. Par exemple, supposons que votre liste de clients est la source d'un champ liste de choix dans la liste des commandes en attente. Vous pouvez exclure un élément de la liste de clients à supprimer si le client possède des commandes en attente. Dans ce cas, vous pouvez définir la propriété RelationshipDeleteBehavior pour le champ de recherche dans les commandes en attente à Restrict.

Un champ liste de choix qui applique une contrainte de suppression doit être indexé. Avant de définir la propriété RelationshipDeleteBehavior sur Cascade ou Restrict, tout d'abord définir la propriété Indexed à true.

Important

L'utilisateur doit disposer des autorisations ManageLists dans la liste source pour spécifier Cascade ou Restrict. Pour plus d'informations, consultez l'énumération SPBasePermissions .

En outre, vous ne pouvez pas spécifier une contrainte de suppression si :

  • Le champ de recherche autorise les valeurs multiples.

    Avant de définir la propriété RelationshipDeleteBehavior, assurez-vous que la propriété AllowMultipleValues renvoie la valeur false.

  • Le champ de recherche pointant vers une liste dans un autre site Web.

    Vérifiez la valeur de la propriété LookupWebId du champ de recherche.

  • Le nombre d’éléments de la liste dépasse le nombre maximal défini pour les grandes listes.

    Comparer la valeur retournée par la propriété ItemCount de la liste avec la valeur retournée par la propriété MaxItemsPerThrottledOperation de l'application Web.

L'utilisateur actuel doit disposer de SPBasePermissions.autorisation de ManageLists sur la liste des cibles lorsque cette propriété est définie sur Restrict.

Exemples

L'exemple suivant est une application console qui crée un lien entre les deux listes, les clients et les commandes en attente. Les listes sont liées à l'aide du champ ID de la liste des clients comme source pour un champ code client dans la liste des commandes en attente. Afin d'empêcher qu'un élément de liste de clients est supprimé s'il a des éléments de liste commandes en attente à la recherche, la propriété RelationshipDeleteBehavior du nouveau champ code client est définie à 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

Voir aussi

Référence

SPFieldLookup classe

SPFieldLookup - Membres

Microsoft.SharePoint - Espace de noms

Indexed

AllowMultipleValues