SPFieldCollection.AddDependentLookup method
Adiciona um campo de pesquisa secundário que depende de um campo de pesquisa principal para sua relação com a lista de onde ele obtém informações.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaração
Public Function AddDependentLookup ( _
displayName As String, _
primaryLookupFieldId As Guid _
) As String
'Uso
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
)
Parâmetros
displayName
Type: System.StringO nome de exibição para o campo de pesquisa secundário.
primaryLookupFieldId
Type: System.GuidO valor da propriedade Id do objeto SPFieldLookup que representa o campo primário.
Valor retornado
Type: System.String
O nome do campo interno.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | O valor passado no parâmetro displayName é uma seqüência de caracteres vazia ou nula. |
ArgumentNullException | O valor passado no parâmetro primaryLookupFieldId é Empty ou nulo. |
SPException | O campo identificado pelo valor passado no parâmetro primaryLookupFieldId não existe, não é do tipo SPFieldLookupou o IsDependentLookup propriedade retornará true. |
Comentários
Em uma pesquisa de várias colunas, o campo primário é o objeto de SPFieldLookup que estabelece a relação com a lista é a fonte do valor do campo de pesquisa. Em seguida, um ou mais campos secundários podem depender o campo primário de sua relação com a lista de origem. A lista de origem está ciente do campo primário; ou seja, você pode descobrir o campo principal, examinando os objetos na coleção retornada pelo método de GetRelatedFields() da lista de origem. O campo principal, por sua vez, está ciente de todos os campos que dependem dele; Você pode descobrir campos dependentes, chamando o método de GetDependentLookupInternalNames() do campo primário.
Para criar uma pesquisa de várias colunas, comece criando o campo principal, chamando o método AddLookup(String, Guid, Boolean) . Em seguida, você pode usar o método AddDependentLookup para criar um ou mais campos secundários que dependem do campo primário.
Examples
O exemplo a seguir é um aplicativo de console que obtém a coleção de campos associada à lista de pedidos pendentes e adiciona que um campo de pesquisa chamado identificação do cliente que aponta para o campo ID da lista de clientes. O código então cria um campo secundário depende do campo ID do cliente para sua relação com a lista de clientes.
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
Ver também
Referência
Microsoft.SharePoint namespace
AddLookup(String, Guid, Boolean)