Свойство SPFieldLookup.CountRelated
Получает или задает логическое значение, которое указывает, следует ли отображать количество элементов в списке поиска, поиск до текущего элемента списка.
Пространство имен: Microsoft.SharePoint
Сборка: Microsoft.SharePoint (в Microsoft.SharePoint.dll)
Синтаксис
'Декларация
Public Overridable Property CountRelated As Boolean
Get
Set
'Применение
Dim instance As SPFieldLookup
Dim value As Boolean
value = instance.CountRelated
instance.CountRelated = value
public virtual bool CountRelated { get; set; }
Значение свойства
Тип: System.Boolean
true для возврата числа элементов, относящихся к текущему элементу; в противном случае — false.
Замечания
Число связанных с Lookup поля являются разновидностью Lookup поля обратного уточняющего запроса и возвращает количество элементов в конечном списке, вид до элемента в текущем списке.
Если свойство CountRelated имеет значение true, следует настроить текущее поле Lookup так, чтобы он указывал на другое поле, Lookup в конечном списке. Для этого с помощью свойства LookupList , чтобы определяет список целевой объект и свойство LookupField , чтобы его имя внутреннего объекта SPFieldLookup в целевой список. Затем поле число связанных Lookup имеет вычисленного значения равно числу элементов в списке целевой объект, связанный с текущим элементом списка.
Например предположим, что имеется два списка Customers и Orders. Необходимо, чтобы элементы в списке заказов для отображения, который разместил заказ, чтобы добавить поле Кодклиента Lookup список заказов и настроить его для поля «идентификатор» в списке клиентов. Можно также решить, что если посмотреть на список клиентов, которые вы хотите увидеть с первого взгляда, сколько заказов каждого клиента имеет. Для этого добавьте поле число связанных заказов Lookup к списку клиентов и задана наведите указатель на поле Lookup идентификатор клиента в списке заказов. Затем поле заказов в списке клиентов отображается количество заказов, размещенных каждого клиента.
Примечание
Если свойство CountRelated имеет значение true, чтобы true автоматически устанавливаются свойства ReadOnlyField и AllowDeletion .
Примеры
Следующий пример является консольным приложением, которое работает с двумя списками Customers и Orders. Цель состоит в том, чтобы включить пользователя, который имеет представления элемент в списке клиентов, взглянув на количество элементов этого клиента в списке заказов.
Приложение начинает путем связывания двух списков. Это достигается путем создания поля подстановки идентификатор клиента в списке заказов, указывающий на поле код в списке клиентов. Затем приложение создает заказы поле в списке клиентов, указывает на поле Идентификатор клиента в списке заказов и присваивает свойству новое поле 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