SPFieldLookup.CountRelated - Propriété
Obtient ou définit une valeur booléenne qui spécifie s'il faut afficher le nombre d'éléments dans la liste de choix qui ressemblent à l'élément de liste actuel.
Espace de noms : Microsoft.SharePoint
Assembly : Microsoft.SharePoint (dans Microsoft.SharePoint.dll)
Syntaxe
'Déclaration
Public Overridable Property CountRelated As Boolean
Get
Set
'Utilisation
Dim instance As SPFieldLookup
Dim value As Boolean
value = instance.CountRelated
instance.CountRelated = value
public virtual bool CountRelated { get; set; }
Valeur de propriété
Type : System.Boolean
true pour renvoyer le nombre d'éléments liés à l'élément actuel ; dans le cas contraire, false.
Remarques
Les champs liés au nombre de Lookup sont une variante des champs Lookup qui effectuent une recherche inversée et retourne le nombre d'éléments de la liste des cibles qui ressemblent à un élément dans la liste actuelle.
Lorsque vous définissez la propriété CountRelated sur true, vous devez configurer le champ Lookup actuel afin qu'il pointe vers un autre champ de Lookup dans la liste des cibles. Cela en définissant la propriété LookupList afin qu'il identifie la liste des cibles et la propriété LookupField afin qu'elle spécifie le nom interne d'un objet SPFieldLookup sur la liste des cibles. Le champ nombre liées Lookup a ensuite une valeur calculée égale au nombre d'éléments dans la liste des cibles qui sont liées à l'élément de liste actuel.
Par exemple, supposons que vous disposez de deux listes, Customers et Orders. Vous souhaitez que les éléments de la liste de commandes pour montrer qui a passé une commande, pour ajouter un champ de Lookup le code client à la liste des commandes et le configurer pour qu'il pointe vers le champ ID de la liste des clients. Vous décidez également que lorsque vous examinez la liste de clients que vous souhaitez être en mesure de voir en un coup de œil comment de nombreuses commandes de chaque client a. Pour ce faire, vous ajoutez un champ de Lookup liés à nombre de commandes à la liste des clients et configurez qu'elle pointe vers le champ ID de client Lookup la liste des commandes. Le champ de commandes dans la liste des clients affiche ensuite le nombre de commandes passées par chaque client.
Notes
Lorsque vous définissez la propriété CountRelated sur true, les propriétés ReadOnlyField et AllowDeletion sont automatiquement définies à true .
Exemples
L'exemple suivant est une application de console qui fonctionne avec deux listes, Customers et Orders. L'objectif est de permettre à un utilisateur qui possède des vues un élément dans la liste de clients pour voir en un coup de œil le nombre d'éléments que le client dans la liste des commandes.
L'application commence en liant les deux listes. Il effectue cette opération en créant un champ de recherche code client dans la liste des commandes qui pointe vers le champ ID dans la liste des clients. L'application crée un champ de commandes dans la liste des clients, il pointe vers le champ code client dans la liste des commandes et affecte à la nouvelle propriété du champ CountRelatedtrue.
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