Share via


de la propiedad SPFieldLookup.RelationshipDeleteBehavior

Obtiene o establece el comportamiento de eliminación del campo de búsqueda.

Espacio de nombres:  Microsoft.SharePoint
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
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; }

Valor de propiedad

Tipo: Microsoft.SharePoint.SPRelationshipDeleteBehavior
El comportamiento de eliminación. Los valores posibles incluyen Cascade, Restrict y None.

Excepciones

Excepción Condición
SPException

No se puede establecer un valor distinto de None si el campo de búsqueda representa una columna de sitio.

Comentarios

La propiedad RelationshipDeleteBehavior permite exigir la integridad referencial en la relación entre dos listas cuando una lista depende de otra lista. Si un campo de búsqueda en la lista dependiente tiene la propiedad RelationshipDeleteBehavior establecida en Cascade, a continuación, eliminar un elemento de la lista de origen hace que todos los elementos de lista dependientes relacionada también va a eliminar. Por ejemplo, suponga que tiene una lista de los clientes que está relacionada con una lista de direcciones por un campo de búsqueda en la lista de direcciones. Es posible que desee eliminar un elemento de los clientes para hacer que todos los elementos relacionados de direcciones se eliminarán también. Puede hacerlo estableciendo la propiedad RelationshipDeleteBehavior del campo de búsqueda en la lista de direcciones para Cascade.

Si se establece la propiedad RelationshipDeleteBehavior en Restrict impide que se va a eliminar si los elementos de la lista dependiente buscan a ella un elemento en la lista de origen. Por ejemplo, suponga que la lista de los clientes es el origen de un campo de búsqueda en la lista de pedidos pendientes. Es posible que no desee un elemento de la lista de los clientes que se eliminará si el cliente tiene los pedidos pendientes. En ese caso, puede establecer la propiedad RelationshipDeleteBehavior del campo de búsqueda en pedidos pendientes a Restrict.

Un campo de búsqueda que se aplica una restricción de eliminación debe ser indexado. Antes de establecer la propiedad RelationshipDeleteBehavior en Cascade o Restrict, en primer lugar, establezca la propiedad de Indexed a true.

Importante

El usuario debe tener permiso de ManageLists en la lista de origen para especificar Cascade o Restrict. Para obtener más información, vea la enumeración SPBasePermissions .

Además, no puede especificar una restricción de eliminación si:

  • El campo de búsqueda permite varios valores.

    Antes de establecer la propiedad RelationshipDeleteBehavior, asegúrese de que la propiedad AllowMultipleValues devuelve false.

  • El campo de búsqueda apunta a una lista en otro sitio web.

    Compruebe el valor de la propiedad LookupWebId del campo de búsqueda.

  • El número de elementos de la lista supera el máximo establecido para las listas de gran tamaño.

    Compare el valor devuelto por la propiedad ItemCount de la lista con el valor devuelto por la propiedad MaxItemsPerThrottledOperation de la aplicación Web.

El usuario actual debe tener SPBasePermissions.permiso de ManageLists en la lista de destino cuando se establece esta propiedad en Restrict.

Ejemplos

En el siguiente ejemplo es una aplicación de consola que crea un vínculo entre dos listas, los clientes y los pedidos pendientes. Las listas vinculadas utilizando el campo de identificador en la lista de los clientes como el origen para un nuevo campo de ID de cliente en la lista de pedidos pendientes. Para impedir que se va a eliminar si tiene los elementos de lista de pedidos pendientes ¿está buscando hasta un elemento de lista de los clientes, la propiedad RelationshipDeleteBehavior del nuevo campo de ID de cliente se establece en 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

Vea también

Referencia

clase SPFieldLookup

Miembros SPFieldLookup

Espacio de nombres Microsoft.SharePoint

Indexed

AllowMultipleValues