SPFieldLookup.CountRelated property
Obtém ou define um valor booleano que especifica se deve exibir a contagem de itens na lista de pesquisa que procure até o item atual da lista.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaração
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; }
Property value
Type: System.Boolean
true para retornar o número de itens relacionados ao item atual; Caso contrário, false.
Comentários
Campos relacionados a contagem de Lookup são uma variante de Lookup campos que realizar uma pesquisa inversa e retornar a contagem de itens na lista target, aparência até um item na lista atual.
Quando você define a propriedade CountRelated para true, você deve configurar o campo Lookup atual para que ele aponte para outro campo Lookup na lista de destino. Para fazer isso, definindo a propriedade LookupList para que ele identifica a lista de destino e a propriedade LookupField para que ele especifica o nome interno de um objeto de SPFieldLookup da lista de destino. O campo relacionado a contagem Lookup tem um valor calculado igual ao número de itens da lista de destino que estão relacionadas ao item atual da lista.
Por exemplo, suponha que você tenha duas listas de clientes e pedidos. Deseja que os itens na lista de pedidos para mostrar o que deu uma ordem, para que você adiciona um campo de Lookup de identificação de cliente à lista de ordens e configurá-lo para apontar para o campo ID da lista de clientes. Você também pode decidir que quando você examinar a lista de clientes que você deseja ver de relance quantas ordens de cada cliente tem. Para que isso seja possível, você adiciona um campo de Lookup de ordens relacionadas a contagem para a lista de clientes e configurá-lo para apontar para o campo de Lookup ID de cliente na lista de ordens. O campo de pedidos na lista de clientes, em seguida, exibe o número de pedidos feitos por cada cliente.
Dica
Quando você definir a propriedade CountRelated como true, as propriedades ReadOnlyField e AllowDeletion são definidas automaticamente para true .
Examples
O exemplo a seguir é um aplicativo de console que funciona com duas listas de clientes e pedidos. O objetivo é permitir que um usuário com modos de exibição de um item na lista de clientes para ver rapidamente quantos itens que o cliente na lista de ordens.
O aplicativo começa vinculando as duas listas. Ele faz isso criando um campo de pesquisa ID de cliente na lista de pedidos que aponte para o campo ID da lista de clientes. Em seguida, o aplicativo cria um campo de pedidos na lista de clientes, aponta para o campo ID do cliente na lista de ordens e define a nova propriedade do campo CountRelated para 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