Partager via


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

Voir aussi

Référence

SPFieldLookup classe

SPFieldLookup - Membres

Microsoft.SharePoint - Espace de noms