SPFieldLookup.RelationshipDeleteBehavior property
Obtém ou define o comportamento de exclusão do campo de pesquisa.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaração
Public Property RelationshipDeleteBehavior As SPRelationshipDeleteBehavior
Get
Set
'Uso
Dim instance As SPFieldLookup
Dim value As SPRelationshipDeleteBehavior
value = instance.RelationshipDeleteBehavior
instance.RelationshipDeleteBehavior = value
public SPRelationshipDeleteBehavior RelationshipDeleteBehavior { get; set; }
Property value
Type: Microsoft.SharePoint.SPRelationshipDeleteBehavior
O comportamento de exclusão. Os valores possíveis incluem Cascade, Restrict e None.
Exceptions
Exception | Condition |
---|---|
SPException | Você não pode definir um valor diferente de None , se o campo de pesquisa representa uma coluna de site. |
Comentários
A propriedade de RelationshipDeleteBehavior permite que você impor integridade referencial da relação entre duas listas de uma lista depende de outra lista. Se um campo de pesquisa na lista dependente tem a propriedade de RelationshipDeleteBehavior definida como Cascade, em seguida, excluir um item da lista de origem faz com que todos os itens da lista de dependentes relacionados a ser excluída também. Por exemplo, suponha que você tenha uma lista de clientes está relacionada a uma lista de endereços por um campo de pesquisa na lista de endereços. Talvez você queira excluir um item de clientes para fazer com que todos os itens relacionados de endereços a serem excluídos também. Você poderia ser feito definindo a propriedade RelationshipDeleteBehavior do campo de pesquisa na lista de endereços para Cascade.
Definindo a propriedade RelationshipDeleteBehavior como Restrict impede que um item da lista de origem sejam excluídos se pesquisar todos os itens na lista de dependentes para ele. Por exemplo, suponha que sua lista de clientes é a fonte de um campo de pesquisa na lista de pedidos pendentes. Talvez você não queira um item da lista de clientes para ser excluído se o cliente tiver pedidos pendentes. Nesse caso, você poderia definir a propriedade de RelationshipDeleteBehavior para o campo de pesquisa em pedidos pendentes para Restrict.
Um campo de pesquisa que impõe uma restrição de exclusão deve ser indexado. Antes de definir a propriedade RelationshipDeleteBehavior para Cascade ou Restrict, defina a propriedade Indexed para true.
Importante
O usuário deve ter permissão de ManageLists na lista de fonte para especificar o Cascade ou Restrict. Para obter mais informações, consulte a enumeração SPBasePermissions .
Além disso, você não pode especificar uma restrição de exclusão se:
-
O campo de pesquisa permite que vários valores.
Antes de definir a propriedade RelationshipDeleteBehavior , certifique-se de que a propriedade AllowMultipleValues retorna false.
-
O campo de pesquisa aponta para uma lista no outro site.
Verifique o valor da propriedade de LookupWebId do campo de pesquisa.
-
O número de itens na lista excede o máximo definido para listas grandes.
Compare o valor retornado pela propriedade de ItemCount da lista com o valor retornado pela propriedade de MaxItemsPerThrottledOperation do aplicativo da Web.
O usuário atual deve ter SPBasePermissions.permissão de ManageLists da lista de destino quando essa propriedade é definida como Restrict.
Examples
O exemplo a seguir é um aplicativo de console que cria um vínculo entre duas listas, os clientes e pedidos pendentes. As listas são vinculadas usando o campo ID da lista de clientes como a origem para um novo campo de ID de cliente na lista de pedidos pendentes. Para impedir que um item de lista de clientes seja excluído se ele tiver quaisquer itens de lista de pedidos pendentes procurando até, a propriedade RelationshipDeleteBehavior do novo campo Identificação do cliente é definida como Restrict.
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 lookupList = site.Lists.TryGetList("Customers");
SPList relatedList = site.Lists.TryGetList("Pending Orders");
if (lookupList != null && relatedList != null)
{
string strPrimaryCol = relatedList.Fields.AddLookup("Customer ID", lookupList.ID, true);
SPFieldLookup primaryCol = (SPFieldLookup)relatedList.Fields.GetFieldByInternalName(strPrimaryCol);
primaryCol.LookupField = lookupList.Fields["ID"].InternalName;
primaryCol.Indexed = true;
primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict;
primaryCol.Update();
}
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using siteCollection As New SPSite("https://localhost")
Using site As SPWeb = siteCollection.OpenWeb()
Dim lookupList As SPList = site.Lists.TryGetList("Customers")
Dim relatedList As SPList = site.Lists.TryGetList("Pending Orders")
If lookupList IsNot Nothing AndAlso relatedList IsNot Nothing Then
Dim strPrimaryCol As String = relatedList.Fields.AddLookup("Customer ID", lookupList.ID, True)
Dim primaryCol As SPFieldLookup = _
DirectCast(relatedList.Fields.GetFieldByInternalName(strPrimaryCol), SPFieldLookup)
primaryCol.LookupField = lookupList.Fields("ID").InternalName
primaryCol.Indexed = True
primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict
primaryCol.Update()
End If
End Using
End Using
Console.Write(vbLf & "Press ENTER to continue...")
Console.ReadLine()
End Sub
End Module