SPRelatedField - Classe

Fournit des informations sur un champ liste de choix dans une liste d'enfants qui obtient des informations à partir d'une liste parente.

Hiérarchie d’héritage

System.Object
  Microsoft.SharePoint.SPRelatedField

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

Syntaxe

'Déclaration
Public Class SPRelatedField
'Utilisation
Dim instance As SPRelatedField
public class SPRelatedField

Remarques

Dans Microsoft SharePoint Foundation , deux listes deviennent connexes lorsqu'un utilisateur crée un champ liste de choix dans une liste qui prend sa valeur d'un champ d'une autre liste. Vous pouvez considérer la liste qui fournit les données sous la forme du parent et de la liste qui recherche des données comme l' enfant. Pour découvrir quels champs de listes enfants dépendent des informations dans une liste parent, appelez la méthode GetRelatedFields() sur un objet SPList qui représente la liste parente.

La méthode GetRelatedFields retourne une collection d'objets SPRelatedField avec les propriétés suivantes :

  • LookupList. Obtient l'objet SPList qui représente la liste parente.

  • WebId. Obtient la ID du site Web où se trouve la liste des enfants.

  • ListId. Obtient l' ID de la liste des enfants.

  • FieldId. Obtient le Id du champ liste de choix dans la liste des enfants.

  • RelationshipDeleteBehavior. Obtient la contrainte d'intégrité de données définie pour la relation de la liste.

La dernière propriété, RelationshipDeleteBehavior, représente un aspect important des relations de liste. Un utilisateur qui crée un champ liste de choix, par le biais de l'interface utilisateur ou via le modèle objet, peut définir des contraintes sur l'impact des suppressions à partir d'une liste de suppressions à partir de l'autre. Par exemple, l'utilisateur peut spécifier que les suppressions à partir du parent de liste en cascade à l'enfant ; Autrement dit, lorsqu'un élément est supprimé de la liste parente, tous les éléments associés dans la liste des enfants sont également supprimés. L'utilisateur peut également spécifier que les suppressions de la liste parente sont limitées; Impossible de supprimer un élément de la liste parente s'il existent des éléments associés dans la liste des enfants. Pour plus d'informations, consultez l'énumération SPRelationshipDeleteBehavior .

Notes

Afin de limiter des suppressions, l'utilisateur doit disposer de SPBasePermissions.autorisation de ManageLists sur la liste parente.

Dans SharePoint Foundation un utilisateur peut également créer une recherche de plusieurs colonnes. Dans ce cas, la liste des enfants a une colonne principale qui définit la relation avec la liste parente, et il a une ou plusieurs colonnes secondaires lire les valeurs des champs de la liste parente, mais dépendent de la colonne primaire de la relation de la liste. SPRelatedField objets contiennent des informations concernant uniquement la colonne primaire. Pour obtenir des informations sur les colonnes secondaires, appelez la méthode GetDependentLookupInternalNames de l'objet SPFieldLookup qui représente la colonne primaire.

Exemples

L’exemple suivant est une application console qui communique des informations sur les champs de la liste Customers qui fournissent les données aux champs de recherche d’autres listes. Pour chaque champ associé qui représente une colonne principale, l’application appelle la méthode GetDependentLookupInternalNames pour obtenir la liste des champs qui représentent des colonnes secondaires.

using System;
using System.Collections.Generic;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite siteCollection = new SPSite("https://localhost"))
            {
                using (SPWeb site = siteCollection.OpenWeb())
                {
                    SPList targetList = site.Lists.TryGetList("Customers");
                    SPRelatedFieldCollection relatedFields = targetList.GetRelatedFields();

                    string strSeparator = new String('=', 70);
                    string strUnderline = new String('-', 20);
                    string strFormat = "Target Field: {0} | Related Field: {1}";

                    Console.WriteLine(strSeparator);
                    foreach (SPRelatedField fieldInfo in relatedFields)
                    {
                        using (SPWeb relatedSite = siteCollection.AllWebs[fieldInfo.WebId])
                        {
                            SPList relatedList = relatedSite.Lists.GetList(fieldInfo.ListId, false);
                            SPFieldLookup relatedField = relatedList.Fields[fieldInfo.FieldId] as SPFieldLookup;
                            SPField targetField = targetList.Fields.GetFieldByInternalName(relatedField.LookupField);

                            Console.WriteLine("\nTarget List: {0} ({1}) | Related List: {2} ({3})", 
                                targetList.Title, site.Title, relatedList.Title, relatedSite.Title);

                            Console.WriteLine("\nPrimary Column");
                            Console.WriteLine(strUnderline);
                            Console.WriteLine(strFormat, targetField.Title, relatedField.Title);
                            Console.WriteLine("Deletion behavior: {0}", relatedField.RelationshipDeleteBehavior);

                            Console.WriteLine("\nSecondary Columns");
                            Console.WriteLine(strUnderline);

                            List<string> dependents = relatedField.GetDependentLookupInternalNames();
                            for (int i = 0; i < dependents.Count; i++)
                            {
                                SPFieldLookup lookup = relatedList.Fields.GetFieldByInternalName(dependents[i]) as SPFieldLookup;
                                SPField field = targetList.Fields.GetFieldByInternalName(lookup.LookupField);

                                Console.WriteLine(strFormat, field.Title, lookup.Title);
                            }
                            Console.WriteLine();
                            Console.WriteLine(strSeparator);
                        }
                    }
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using siteCollection As New SPSite("https://localhost")
            Using site As SPWeb = siteCollection.OpenWeb()
                Dim targetList As SPList = site.Lists.TryGetList("Customers")
                Dim relatedFields As SPRelatedFieldCollection = targetList.GetRelatedFields()

                Dim strSeparator As String = New [String]("="c, 70)
                Dim strUnderline As String = New [String]("-"c, 20)
                Dim strFormat As String = "Target Field: {0} | Related Field: {1}"

                Console.WriteLine(strSeparator)
                For Each fieldInfo As SPRelatedField In relatedFields
                    Using relatedSite As SPWeb = siteCollection.AllWebs(fieldInfo.WebId)
                        Dim relatedList As SPList = relatedSite.Lists.GetList(fieldInfo.ListId, False)
                        Dim relatedField As SPFieldLookup = TryCast(relatedList.Fields(fieldInfo.FieldId), SPFieldLookup)
                        Dim targetField As SPField = targetList.Fields.GetFieldByInternalName(relatedField.LookupField)

                        Console.WriteLine(vbLf & "Target List: {0} ({1}) | Related List: {2} ({3})", _
                                          targetList.Title, site.Title, relatedList.Title, relatedSite.Title)

                        Console.WriteLine(vbLf & "Primary Column")
                        Console.WriteLine(strUnderline)
                        Console.WriteLine(strFormat, targetField.Title, relatedField.Title)
                        Console.WriteLine("Deletion behavior: {0}", relatedField.RelationshipDeleteBehavior)

                        Console.WriteLine(vbLf & "Secondary Columns")
                        Console.WriteLine(strUnderline)

                        Dim dependents As List(Of String) = relatedField.GetDependentLookupInternalNames()
                        Dim i As Integer = 0
                        While i < dependents.Count
                            Dim lookup As SPFieldLookup = _
                                TryCast(relatedList.Fields.GetFieldByInternalName(dependents(i)), SPFieldLookup)
                            Dim field As SPField = targetList.Fields.GetFieldByInternalName(lookup.LookupField)

                            Console.WriteLine(strFormat, field.Title, lookup.Title)
                            i = i + 1
                        End While
                        Console.WriteLine()
                        Console.WriteLine(strSeparator)
                    End Using
                Next
            End Using
        End Using
        Console.Write(vbLf & "Press ENTER to continue...")
        Console.ReadLine()
    End Sub
End Module

L’application console imprime une sortie comparable à l’exemple suivant.

======================================================================

Target List: Customers (Team Site) | Related List: Complete Orders (Team Site)

Primary Column
--------------------
Target Field: ID | Related Field: Customer ID
Deletion behavior: None

Secondary Columns
--------------------
Target Field: Last Name | Related Field: Customer

======================================================================

Target List: Customers (Team Site) | Related List: Addresses (Team Site)

Primary Column
--------------------
Target Field: ID | Related Field: Customer ID
Deletion behavior: Cascade

Secondary Columns
--------------------
Target Field: Last Name | Related Field: Last Name
Target Field: First Name | Related Field: First Name

======================================================================

Target List: Customers (Team Site) | Related List: Pending Orders (Team Site)

Primary Column
--------------------
Target Field: ID | Related Field: Customer ID
Deletion behavior: Restrict

Secondary Columns
--------------------
Target Field: First Name | Related Field: First Name
Target Field: Last Name | Related Field: Last Name
Target Field: Phone | Related Field: Phone

======================================================================

Press ENTER to continue...

Cohérence de thread

Tous les membres statique (Partagé dans Visual Basic)s publics de ce type sont thread-safe. Cela n’est pas garanti pour les membres d’instance.

Voir aussi

Référence

SPRelatedField - Membres

Microsoft.SharePoint - Espace de noms

GetRelatedFields()

GetDependentLookupInternalNames()

SPRelatedFieldCollection

SPFieldLookup

IsRelationship

IsDependentLookup

SPRelationshipDeleteBehavior