Freigeben über


SPFieldCollection.AddDependentLookup-Methode

Fügt ein sekundäres Nachschlagefeld hinzu, das von einem primären Nachschlagefeld für die Beziehung mit der Liste abhängig ist, aus der die verwendeten Informationen stammen.

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

Syntax

'Declaration
Public Function AddDependentLookup ( _
    displayName As String, _
    primaryLookupFieldId As Guid _
) As String
'Usage
Dim instance As SPFieldCollection
Dim displayName As String
Dim primaryLookupFieldId As Guid
Dim returnValue As String

returnValue = instance.AddDependentLookup(displayName, _
    primaryLookupFieldId)
public string AddDependentLookup(
    string displayName,
    Guid primaryLookupFieldId
)

Parameter

  • displayName
    Typ: System.String

    Der Anzeigename für den sekundären Nachschlagefelds.

Rückgabewert

Typ: System.String
Das Feld interne Name.

Ausnahmen

Ausnahme Bedingung
ArgumentNullException

Der im displayName -Parameter übergebene Wert ist Null oder eine leere Zeichenfolge.

ArgumentNullException

Der im primaryLookupFieldId -Parameter übergebene Wert ist "GUID.Empty" oder Null.

SPException

Das Feld in der primaryLookupFieldId -Parameter übergebene Wert nicht vorhanden ist, ist nicht vom Typ SPFieldLookupoder die IsDependentLookup -Eigenschaft gibt truezurück.

Hinweise

In einer Suche mehrere Spalte ist das primäre Feld das SPFieldLookup -Objekt, das die Beziehung mit der Liste hergestellt wird, der die Quelle für das Nachschlagefeld Wert ist. Das primäre Feld für ihre Beziehung zu der Liste können dann eine oder mehrere sekundäre Felder abhängen. Die Quellliste kennt das Hauptfeld; Das heißt, erkennen Sie das Hauptfeld durch die Objekte in der Auflistung der Quellliste GetRelatedFields() -Methode zurückgegebene untersuchen. Das Hauptfeld ist, beachten Sie alle Felder, die davon abhängen. Sie können abhängige Felder ermitteln, indem das primäre Feld GetDependentLookupInternalNames() -Methode.

Zum Erstellen einer mehrspaltigen Suche zunächst das Hauptfeld durch Aufrufen der AddLookup(String, Guid, Boolean) -Methode erstellen. Die AddDependentLookup -Methode können dann eine oder mehrere sekundäre Felder erstellen, von die das Primärfeld abhängen.

Beispiele

Im folgende Beispiel ist eine Konsolenanwendung, die die Auflistung der Felder der Liste der ausstehenden Bestellungen zugeordnet und fügt ein Lookup-Feld mit dem Namen Kunden-ID-ID-Feld in der Liste Debitoren verweist. Der Code erstellt dann ein sekundärer Feld, das das Feld Kunden-ID für die Beziehung zu der Liste der Kunden abhängt.

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 sourceList = site.Lists["Customers"];
                    SPList dependentList = site.Lists["Pending Orders"];

                    // Create the primary column.
                    string strPrimaryCol = dependentList.Fields.AddLookup("Customer ID", sourceList.ID, true);
                    SPFieldLookup primaryCol = (SPFieldLookup)dependentList.Fields.GetFieldByInternalName(strPrimaryCol);
                    primaryCol.LookupField = sourceList.Fields["ID"].InternalName;
                    primaryCol.Indexed = true;
                    primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict;
                    primaryCol.Update();

                    // Create the secondary column.
                    string strSecondaryCol = dependentList.Fields.AddDependentLookup("Last Name", primaryCol.Id);
                    SPFieldLookup secondaryCol = (SPFieldLookup)dependentList.Fields.GetFieldByInternalName(strSecondaryCol);
                    secondaryCol.LookupField = sourceList.Fields["Last Name"].InternalName;
                    secondaryCol.Update();

                    // Make the primary column the first one on New and Edit forms.
                    SPContentType contentType = dependentList.ContentTypes[0];
                    SPFieldLinkCollection fieldRefs = contentType.FieldLinks;
                    fieldRefs.Reorder(new[] { primaryCol.InternalName });
                    contentType.Update();
                    

                    // Add the columns to the default view.
                    SPView view = dependentList.DefaultView;
                    if (view != null)
                    {
                        SPViewFieldCollection viewFields = view.ViewFields;
                        if (viewFields != null)
                        {
                            viewFields.Add(primaryCol);
                            viewFields.Add(secondaryCol);
                            viewFields.MoveFieldTo(primaryCol.InternalName, 0);
                            viewFields.MoveFieldTo(secondaryCol.InternalName, 1);
                            view.Update();
                        }
                    }
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}
Imports System
Imports Microsoft.SharePoint

Namespace RelatedLists
    Class Program
        Shared Sub Main(ByVal args As String())
            Using siteCollection As New SPSite("https://localhost")
                Using site As SPWeb = siteCollection.OpenWeb()
                    Dim sourceList As SPList = site.Lists("Customers")
                    Dim dependentList As SPList = site.Lists("Pending Orders")

                    ' Create the primary column.
                    Dim strPrimaryCol As String = dependentList.Fields.AddLookup("Customer ID", sourceList.ID, True)
                    Dim primaryCol As SPFieldLookup = DirectCast(dependentList.Fields.GetFieldByInternalName(strPrimaryCol), SPFieldLookup)
                    primaryCol.LookupField = sourceList.Fields("ID").InternalName
                    primaryCol.Indexed = True
                    primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict
                    primaryCol.Update()

                    ' Create the secondary column.
                    Dim strSecondaryCol As String = dependentList.Fields.AddDependentLookup("Last Name", primaryCol.Id)
                    Dim secondaryCol As SPFieldLookup = DirectCast(dependentList.Fields.GetFieldByInternalName(strSecondaryCol), SPFieldLookup)
                    secondaryCol.LookupField = sourceList.Fields("Last Name").InternalName
                    secondaryCol.Update()

                    'Make the primary column the first one on New and Edit forms.
                    Dim contentType As SPContentType = dependentList.ContentTypes(0)
                    Dim fieldRefs As SPFieldLinkCollection = contentType.FieldLinks
                    fieldRefs.Reorder(New String() {primaryCol.InternalName})
                    contentType.Update()

                    ' Add the columns to the default view.
                    Dim view As SPView = dependentList.DefaultView
                    If view <> Nothing Then
                        Dim viewFields As SPViewFieldCollection = view.ViewFields
                        If viewFields <> Nothing Then
                            viewFields.Add(primaryCol)
                            viewFields.Add(secondaryCol)
                            viewFields.MoveFieldTo(primaryCol.InternalName, 0)
                            viewFields.MoveFieldTo(secondaryCol.InternalName, 1)
                            view.Update()
                        End If
                    End If
                End Using
            End Using
            Console.Write(vbLf & "Press ENTER to continue...")
            Console.ReadLine()
        End Sub
    End Class
End Namespace

Siehe auch

Referenz

SPFieldCollection Klasse

SPFieldCollection-Member

Microsoft.SharePoint-Namespace

AddLookup(String, Guid, Boolean)

IsDependentLookup

GetDependentLookupInternalNames()

GetRelatedFields()