de la propiedad SPFieldLookup.CountRelated
Obtiene o establece un valor booleano que especifica si se muestra el recuento de elementos en la lista de búsqueda que buscar hasta el elemento de lista actual.
Espacio de nombres: Microsoft.SharePoint
Ensamblado: Microsoft.SharePoint (en Microsoft.SharePoint.dll)
Sintaxis
'Declaración
Public Overridable Property CountRelated As Boolean
Get
Set
'Uso
Dim instance As SPFieldLookup
Dim value As Boolean
value = instance.CountRelated
instance.CountRelated = value
public virtual bool CountRelated { get; set; }
Valor de propiedad
Tipo: System.Boolean
true para devolver el número de elementos relacionados con el elemento actual; en caso contrario, false.
Comentarios
Campos relacionados con el recuento de Lookup son una variante de Lookup campos que realice una búsqueda inversa y devolver el recuento de elementos en la lista de objetivo y que buscan hasta un elemento en la lista actual.
Cuando se establece la propiedad CountRelated en true, debe configurar el campo de Lookup actual para que señale a otro campo Lookup en la lista de destino. Para ello, establezca la propiedad LookupList para que identifique la lista de destino y la propiedad LookupField para que especifica el nombre interno de un objeto SPFieldLookup en la lista de destino. El campo relacionados con el recuento de Lookup , a continuación, tiene un valor calculado igual al número de elementos en la lista de destino que están relacionadas con el elemento de lista actual.
Por ejemplo, suponga que tiene dos listas, clientes y pedidos. Desea que los elementos en la lista de pedidos para mostrar que ha realizado un pedido, por lo que agrega un campo de Lookup ID de cliente a la lista de pedidos y configurarlo para que apunte al campo de identificador en la lista de los clientes. También decide que, cuando examine tiene la lista de los clientes que desee que puedan ver de un vistazo cuántos pedidos de cada cliente. Para que esto sea posible, agregar un campo de Lookup de pedidos relacionados con el número a la lista de clientes y configurarlo para que apunte al campo de Lookup ID de cliente en la lista de pedidos. El campo de pedidos en la lista de clientes, a continuación, muestra el número de pedidos realizados por cada cliente.
Nota
Cuando se establece la propiedad CountRelated en true, se establecen automáticamente las propiedades ReadOnlyField y AllowDeletion a true .
Ejemplos
En el siguiente ejemplo es una aplicación de consola que funciona con dos listas, clientes y pedidos. El objetivo es permitir a un usuario que tiene vistas de un elemento de la lista de clientes para ver de un vistazo el número de elementos a que el cliente en la lista de pedidos.
La aplicación se inicia mediante la vinculación de las dos listas. Para ello mediante la creación de un campo de búsqueda de ID de cliente en la lista de pedidos que señala al campo de identificador en la lista de los clientes. A continuación, la aplicación crea un campo de pedidos en la lista de los clientes, apunta al campo ID de cliente en la lista de pedidos y establece la nueva propiedad del campo CountRelated en true.
using System;
using Microsoft.SharePoint;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://localhost"))
{
using (SPWeb web = site.OpenWeb())
{
SPList customers = web.Lists.TryGetList("Customers");
SPList orders = web.Lists.TryGetList("Orders");
if (null != customers && null != orders)
{
SPField idField = customers.Fields.TryGetFieldByStaticName("ID");
if (null != idField)
{
// Create a Customer ID field on the Orders list.
// Point it to the ID field on the Customers list.
string customerIdName = orders.Fields.AddLookup("Customer ID", customers.ID, true);
SPFieldLookup customerIdField =
(SPFieldLookup)orders.Fields.GetFieldByInternalName(customerIdName);
customerIdField.LookupField = idField.InternalName;
customerIdField.Update();
// Add the field to the default view.
AddToDefaultView(orders, customerIdName);
// Create an Orders field on the Customers list.
// Point it to the Customer ID field on the Orders list.
string numOrdersName = customers.Fields.AddLookup("Orders", orders.ID, false);
SPFieldLookup numOrdersField =
(SPFieldLookup)customers.Fields.GetFieldByInternalName(numOrdersName);
numOrdersField.LookupField = customerIdField.InternalName;
numOrdersField.CountRelated = true;
numOrdersField.Update();
// Add the field to the default view.
AddToDefaultView(customers, numOrdersName);
}
}
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
static void AddToDefaultView(SPList list, string fieldName)
{
if (list != null && list.Fields.ContainsField(fieldName) && !list.DefaultView.ViewFields.Exists(fieldName))
{
SPView defaultView = list.DefaultView;
defaultView.ViewFields.Add(fieldName);
defaultView.Update();
}
}
}
}
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using site As New SPSite("https://localhost")
Using web As SPWeb = site.OpenWeb()
Dim customers As SPList = web.Lists.TryGetList("Customers")
Dim orders As SPList = web.Lists.TryGetList("Orders")
If customers IsNot Nothing AndAlso orders IsNot Nothing Then
Dim idField As SPField = customers.Fields.TryGetFieldByStaticName("ID")
If idField IsNot Nothing Then
' Create a Customer ID field on the Orders list.
' Point it to the ID field on the Customers list.
Dim customerIdName As String = orders.Fields.AddLookup("Customer ID", customers.ID, True)
Dim customerIdField As SPFieldLookup = _
DirectCast(orders.Fields.GetFieldByInternalName(customerIdName), SPFieldLookup)
customerIdField.LookupField = idField.InternalName
customerIdField.Update()
' Add the field to the default view.
AddToDefaultView(orders, customerIdName)
' Create an Orders field on the Customers list.
' Point it to the Customer ID field on the Orders list.
Dim numOrdersName As String = customers.Fields.AddLookup("Orders", orders.ID, False)
Dim numOrdersField As SPFieldLookup = _
DirectCast(customers.Fields.GetFieldByInternalName(numOrdersName), SPFieldLookup)
numOrdersField.LookupField = customerIdField.InternalName
numOrdersField.CountRelated = True
numOrdersField.Update()
' Add the field to the default view.
AddToDefaultView(customers, numOrdersName)
End If
End If
End Using
End Using
Console.Write(vbLf & "Press ENTER to continue...")
Console.ReadLine()
End Sub
Sub AddToDefaultView(ByVal list As SPList, ByVal fieldName As String)
If list IsNot Nothing AndAlso list.Fields.ContainsField(fieldName) _
AndAlso Not list.DefaultView.ViewFields.Exists(fieldName) Then
Dim defaultView As SPView = list.DefaultView
defaultView.ViewFields.Add(fieldName)
defaultView.Update()
End If
End Sub
End Module