Метод SPFieldCollection.AddDependentLookup
Получает или задает значение, указывающее имя типа контента.
Пространство имен: Microsoft.SharePoint
Сборка: Microsoft.SharePoint (в Microsoft.SharePoint.dll)
Синтаксис
'Декларация
Public Function AddDependentLookup ( _
displayName As String, _
primaryLookupFieldId As Guid _
) As String
'Применение
Dim instance As SPFieldCollection
Dim displayName As String
Dim primaryLookupFieldId As Guid
Dim returnValue As String
returnValue = instance.AddDependentLookup(displayName, _
primaryLookupFieldId)
public string AddDependentLookup(
string displayName,
Guid primaryLookupFieldId
)
Параметры
displayName
Тип: System.StringОтображаемое имя для дополнительного подстановочное поле.
primaryLookupFieldId
Тип: System.GuidЗначение свойства Id объекта SPFieldLookup , который представляет основное поле.
Возвращаемое значение
Тип: System.String
Внутреннее имя поля.
Исключения
Исключение | Условие |
---|---|
ArgumentNullException | Значение, переданное в параметре displayName является пустой строкой или null. |
ArgumentNullException | Значение, переданное в параметре primaryLookupFieldId является null или значение Guid.Empty. |
SPException | Поле, определенное значение, передаваемое в параметре primaryLookupFieldId не существует, не имеет тип SPFieldLookupили его IsDependentLookup свойство возвращает true. |
Замечания
В несколько столбцов подстановки основное поле является объект SPFieldLookup , который устанавливает связь со списком, который является источником значения поля подстановки. Одно или несколько дополнительных полей может зависеть поле первичного соотношение в исходный список. В исходном списке известно основное поле; Основное поле, можно обнаружить, анализ объектов в коллекции, возвращаемой методом GetRelatedFields() в исходном списке. Основное поле, в свою очередь, известно о всех полей, которые зависят от его; Зависимые поля можно обнаружить путем вызова метода GetDependentLookupInternalNames() первичного поля.
Для создания поиска нескольких столбцов, начните с создания первичного поля путем вызова метода AddLookup(String, Guid, Boolean) . Затем можно использовать метод AddDependentLookup , чтобы создать один или несколько дополнительных полей, которые зависят от первичного поля.
Примеры
Следующий пример является консольным приложением, которое возвращает коллекцию полей, связанных со списком ожидающие заказы и добавляет поля подстановок с именем Customer ID, указывает на идентификатор поля в списке клиентов. Затем в коде создается дополнительного поля, зависит от поля Код клиента для его отношения к списку клиентов.
using System;
using Microsoft.SharePoint;
namespace RelatedLists
{
class Program
{
static void Main(string[] args)
{
using (SPSite siteCollection = new SPSite("https://localhost"))
{
using (SPWeb site = siteCollection.OpenWeb())
{
SPList sourceList = site.Lists["Customers"];
SPList dependentList = site.Lists["Pending Orders"];
// Create the primary column.
string strPrimaryCol = dependentList.Fields.AddLookup("Customer ID", sourceList.ID, true);
SPFieldLookup primaryCol = (SPFieldLookup)dependentList.Fields.GetFieldByInternalName(strPrimaryCol);
primaryCol.LookupField = sourceList.Fields["ID"].InternalName;
primaryCol.Indexed = true;
primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict;
primaryCol.Update();
// Create the secondary column.
string strSecondaryCol = dependentList.Fields.AddDependentLookup("Last Name", primaryCol.Id);
SPFieldLookup secondaryCol = (SPFieldLookup)dependentList.Fields.GetFieldByInternalName(strSecondaryCol);
secondaryCol.LookupField = sourceList.Fields["Last Name"].InternalName;
secondaryCol.Update();
// Make the primary column the first one on New and Edit forms.
SPContentType contentType = dependentList.ContentTypes[0];
SPFieldLinkCollection fieldRefs = contentType.FieldLinks;
fieldRefs.Reorder(new[] { primaryCol.InternalName });
contentType.Update();
// Add the columns to the default view.
SPView view = dependentList.DefaultView;
if (view != null)
{
SPViewFieldCollection viewFields = view.ViewFields;
if (viewFields != null)
{
viewFields.Add(primaryCol);
viewFields.Add(secondaryCol);
viewFields.MoveFieldTo(primaryCol.InternalName, 0);
viewFields.MoveFieldTo(secondaryCol.InternalName, 1);
view.Update();
}
}
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}
Imports System
Imports Microsoft.SharePoint
Namespace RelatedLists
Class Program
Shared Sub Main(ByVal args As String())
Using siteCollection As New SPSite("https://localhost")
Using site As SPWeb = siteCollection.OpenWeb()
Dim sourceList As SPList = site.Lists("Customers")
Dim dependentList As SPList = site.Lists("Pending Orders")
' Create the primary column.
Dim strPrimaryCol As String = dependentList.Fields.AddLookup("Customer ID", sourceList.ID, True)
Dim primaryCol As SPFieldLookup = DirectCast(dependentList.Fields.GetFieldByInternalName(strPrimaryCol), SPFieldLookup)
primaryCol.LookupField = sourceList.Fields("ID").InternalName
primaryCol.Indexed = True
primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict
primaryCol.Update()
' Create the secondary column.
Dim strSecondaryCol As String = dependentList.Fields.AddDependentLookup("Last Name", primaryCol.Id)
Dim secondaryCol As SPFieldLookup = DirectCast(dependentList.Fields.GetFieldByInternalName(strSecondaryCol), SPFieldLookup)
secondaryCol.LookupField = sourceList.Fields("Last Name").InternalName
secondaryCol.Update()
'Make the primary column the first one on New and Edit forms.
Dim contentType As SPContentType = dependentList.ContentTypes(0)
Dim fieldRefs As SPFieldLinkCollection = contentType.FieldLinks
fieldRefs.Reorder(New String() {primaryCol.InternalName})
contentType.Update()
' Add the columns to the default view.
Dim view As SPView = dependentList.DefaultView
If view <> Nothing Then
Dim viewFields As SPViewFieldCollection = view.ViewFields
If viewFields <> Nothing Then
viewFields.Add(primaryCol)
viewFields.Add(secondaryCol)
viewFields.MoveFieldTo(primaryCol.InternalName, 0)
viewFields.MoveFieldTo(secondaryCol.InternalName, 1)
view.Update()
End If
End If
End Using
End Using
Console.Write(vbLf & "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Class
End Namespace
См. также
Справочные материалы
Пространство имен Microsoft.SharePoint
AddLookup(String, Guid, Boolean)