SPRelatedField-Klasse

Enthält Informationen zu einem Nachschlagefeld in einer untergeordneten Liste, die Informationen aus der übergeordneten Liste abruft.

Vererbungshierarchie

System.Object
  Microsoft.SharePoint.SPRelatedField

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
Public Class SPRelatedField
'Usage
Dim instance As SPRelatedField
public class SPRelatedField

Hinweise

Microsoft SharePoint Foundation werden zwei Listen miteinander verknüpft, wenn ein Benutzer ein Nachschlagefeld für eine Liste erstellt, die den Wert aus einem Feld in einer anderen Liste akzeptiert. Sie können der Liste, die Daten als das übergeordnete bereitstellt und die Liste, die Daten als untergeordnetenachschlägt vorstellen. Um zu ermitteln, welche Felder in untergeordneten Listen von Informationen in einer Liste übergeordneten abhängen, rufen Sie die GetRelatedFields() -Methode für ein SPList -Objekt, das die übergeordnete Liste darstellt.

Die GetRelatedFields -Methode gibt eine Auflistung von SPRelatedField -Objekten mit den folgenden Eigenschaften:

  • LookupList. Ruft das SPList -Objekt, das die übergeordnete Liste darstellt.

  • WebId. Ruft die ID der Website für die Liste die untergeordneten Elemente gespeichert ist.

  • ListId. Ruft die ID der untergeordneten Liste ab.

  • FieldId. Ruft die Id des Nachschlagefelds in der Liste der untergeordneten ab.

  • RelationshipDeleteBehavior. Dient zum Abrufen der Daten Integritätsregel für die listenbeziehung definiert ist.

Die letzte Eigenschaft RelationshipDeleteBehavior, stellt einen wichtigen Aspekt der Listenbeziehungen. Ein Benutzer, der ein Nachschlagefeld, über die Benutzeroberfläche oder über das Objektmodell erstellt kann Einschränkungen für Auswirkungen Löschvorgänge aus einer Liste von Löschvorgänge von der anderen festlegen. Beispielsweise kann der Benutzer angeben, aufführt, die vom übergeordneten Löschvorgänge Cascade für das untergeordnete Element; d. h., wenn ein Element aus der übergeordneten Liste gelöscht wird, werden alle verwandten Elemente in der Liste der untergeordneten ebenfalls gelöscht. Der Benutzer kann auch angeben, dass Löschvorgänge von der übergeordneten Liste eingeschränktwerden; ein Element kann nicht aus der übergeordneten Liste gelöscht werden, wenn in der Liste der untergeordneten verwandte Elemente vorhanden sind. Weitere Informationen finden Sie unter der SPRelationshipDeleteBehavior -Enumeration.

Hinweis

Um Löschvorgänge zu beschränken, muss der Benutzer SPBasePermissionsverfügen.ManageLists -Berechtigung für die übergeordnete Liste.

In SharePoint Foundation kann Benutzer auch eine Nachschlagespalte mit mehreren Spalten erstellen. In diesem Fall die Child-Liste ist eine primäre Spalte, die die Beziehung mit der übergeordneten Liste definiert, und es wurde eine oder mehrere sekundäre Spalten, die Werte aus Feldern der übergeordneten Liste lesen, aber die primäre Spalte für die listenbeziehung abhängig. SPRelatedField -Objekte enthalten Informationen zu nur die primäre Spalte. Um Informationen zu sekundären Spalten erhalten möchten, rufen Sie die GetDependentLookupInternalNames -Methode des SPFieldLookup -Objekts, das die primäre Spalte darstellt.

Beispiele

Das folgende Beispiel zeigt eine Konsolenanwendung, die Informationen zu Feldern in der Customers-Liste angibt, die Daten für Nachschlagefelder in anderen Listen bereitstellen. Für jedes verwandte Feld, das eine primäre Spalte darstellt, wird von der Anwendung die GetDependentLookupInternalNames-Methode aufgerufen, um eine Liste der Felder abzurufen, die sekundäre Spalten darstellen.

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

Die Konsolenanwendung druckt eine Ausgabe ähnlich wie im folgenden Beispiel aus.

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

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...

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.

Siehe auch

Referenz

SPRelatedField-Member

Microsoft.SharePoint-Namespace

GetRelatedFields()

GetDependentLookupInternalNames()

SPRelatedFieldCollection

SPFieldLookup

IsRelationship

IsDependentLookup

SPRelationshipDeleteBehavior