del método SPFieldCollection.AddDependentLookup
Agrega un campo de búsqueda secundario que depende de uno principal para su relación con la lista desde la cual obtiene su información.
Espacio de nombres: Microsoft.SharePoint
Ensamblado: Microsoft.SharePoint (en Microsoft.SharePoint.dll)
Sintaxis
'Declaración
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
Tipo: System.StringEl nombre para mostrar para el campo de búsqueda secundaria.
primaryLookupFieldId
Tipo: System.GuidEl valor de la propiedad Id del objeto SPFieldLookup que representa el campo principal.
Valor devuelto
Tipo: System.String
El nombre del campo interno.
Excepciones
Excepción | Condición |
---|---|
ArgumentNullException | El valor pasado en el parámetro displayName es una cadena vacía o null. |
ArgumentNullException | El valor pasado en el parámetro primaryLookupFieldId es Guid.Empty o null. |
SPException | El campo identificado por el valor que se pasa en el parámetro primaryLookupFieldId no existe, no es del tipo SPFieldLookupo su IsDependentLookup propiedad devuelve true. |
Comentarios
En una búsqueda de varias columnas, el campo principal es el objeto SPFieldLookup que establece la relación con la lista que es el origen del valor del campo de búsqueda. El campo principal de su relación con la lista de origen, a continuación, pueden depender de uno o más campos secundarios. La lista de origen es consciente del campo principal; es decir, puede detectar el campo principal mediante el examen de los objetos de la colección devuelta por el método GetRelatedFields() de la lista de origen. El campo principal, a su vez, se tiene constancia de los campos que dependen de él; puede detectar campos dependientes llamando al método de GetDependentLookupInternalNames() del campo principal.
Para crear una búsqueda de varias columnas, comience por crear el campo principal al llamar al método AddLookup(String, Guid, Boolean) . A continuación, puede usar el método AddDependentLookup para crear uno o más campos secundarios que dependen del campo principal.
Ejemplos
En el siguiente ejemplo es una aplicación de consola que obtiene la colección de campos asociados a la lista de pedidos pendientes y se agrega que un campo de búsqueda denominado ID de cliente que apunta al campo de identificador en la lista de los clientes. El código, a continuación, crea un campo secundario que depende del campo de ID de cliente para su relación con la lista de los 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
Vea también
Referencia
Espacio de nombres Microsoft.SharePoint
AddLookup(String, Guid, Boolean)