Compartir a través de


del método SPContentTypeCollection.Delete

Elimina el tipo de contenido especificado de la colección.

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

Sintaxis

'Declaración
Public Sub Delete ( _
    id As SPContentTypeId _
)
'Uso
Dim instance As SPContentTypeCollection
Dim id As SPContentTypeId

instance.Delete(id)
public void Delete(
    SPContentTypeId id
)

Parámetros

Excepciones

Excepción Condición
ArgumentOutOfRangeException

No hay ningún tipo de contenido de la colección tiene el identificador de tipo de contenido especificado.

SPException

El tipo de contenido es el último tipo de contenido en una lista. No se puede eliminar el último tipo de contenido en una lista.

SPException

El tipo de contenido es el último tipo de contenido en una lista. No se puede eliminar el último tipo de contenido en una lista.

El tipo de contenido es el elemento principal de un tipo de contenido de sitio o lista. No se puede eliminar un tipo de contenido que está en uso.

o

El tipo de contenido es parte de una característica activa.

o

La colección de tipo de contenido es de sólo lectura.

SPContentTypeSealedException

El tipo de contenido especificado está sellado.

SPContentTypeReadOnlyException

El tipo de contenido especificado es de sólo lectura.

Comentarios

No puede eliminar un tipo de contenido de sitio si se está usando como base para otro sitio o tipos de contenido de lista. Primero debe quitar este tipo de contenido de todas las listas que lo usen y eliminar todos los tipos de contenido de sitio secundarios que se basan en éste.

No puede eliminar un tipo de contenido de una lista si esa lista contiene elementos de ese tipo de contenido. SharePoint Foundation no considera los elementos enviados a la papelera de reciclaje cuando toma esta decisión. Si esos elementos se vuelven a almacenar una vez eliminado el contenido de la lista, a dichos elementos se les asigna el tipo de contenido predeterminado para la lista.

Cuando se especifica el identificador de un tipo de contenido que se va a eliminar, tenga en cuenta que los identificadores de tipos de contenido de sitio y de lista se derivan de los identificadores de integrados contenido tipos pero no son los mismos que los identificadores de tipo de contenido integrado. Por ejemplo, la siguiente línea de código intenta eliminar el tipo de contenido del elemento especificando SPBuiltInContentTypeId.Item como el identificador de tipo de contenido:

list.ContentTypes.Delete(SPBuiltInContentTypeId.Item); // Throws an exception.

El código produce una excepción de ArgumentOutOfRangeException porque la colección de tipo de contenido de la lista no incluye un tipo de contenido con un identificador de SPBuiltInContentTypeId.Item. Que, sin embargo, incluya un tipo de contenido que tiene un identificador que se deriva de y, por tanto, es una coincidencia con el identificador de tipo de contenido integrada. El siguiente código muestra la forma correcta para buscar y eliminar la copia de la lista del tipo de contenido elemento.

SPContentTypeId id = list.ContentTypes.BestMatch(SPBuiltInContentTypeId.Item);
list.ContentTypes.Delete(id);

Ejemplos

El ejemplo siguiente muestra una aplicación de consola que comprueba si un tipo de contenido obsoleto está en uso en el sitio Web actual o en los sitios secundarios. Si el tipo de contenido no está en uso, la aplicación lo elimina.

Imports System
Imports System.Collections.Generic
Imports Microsoft.SharePoint

Module ConsoleApp

   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.OpenWeb()

            ' Get the the obsolete content type.
            Dim obsolete As SPContentType = webSite.ContentTypes("Test")

            If obsolete IsNot Nothing Then ' We have a content type
               Dim usages As IList(Of SPContentTypeUsage) = SPContentTypeUsage.GetUsages(obsolete)
               If usages.Count > 0 Then ' It is in use

                  Console.WriteLine("The content type is in use in the following locations:")
                  For Each usage As SPContentTypeUsage In usages
                     Console.WriteLine(usage.Url)
                  Next usage

               Else ' It is not in use.
                  ' Delete it.
                  Console.WriteLine("Deleting content type {0}...", obsolete.Name)
                  webSite.ContentTypes.Delete(obsolete.Id)
               End If

            Else ' No content type found.
               Console.WriteLine("The content type does not exist in this site collection.")
            End If

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub

End Module
using System;
using System.Collections.Generic;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.OpenWeb())
            {
               // Get the obsolete content type.
               SPContentType obsolete = webSite.ContentTypes["Test"];

               if (obsolete != null) // We have a content type.
               {
                  IList<SPContentTypeUsage> usages = SPContentTypeUsage.GetUsages(obsolete);
                  if (usages.Count > 0) // It is in use.
                  {
                     Console.WriteLine("The content type is in use in the following locations:");
                     foreach (SPContentTypeUsage usage in usages)
                        Console.WriteLine(usage.Url);
                  }
                  else // The content type is not in use.
                  {
                     // Delete it.
                     Console.WriteLine("Deleting content type {0}...", obsolete.Name);
                     webSite.ContentTypes.Delete(obsolete.Id);
                  }
               }
               else // No content type found.
               {
                  Console.WriteLine("The content type does not exist in this site collection.");
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}

Vea también

Referencia

clase SPContentTypeCollection

Miembros SPContentTypeCollection

Espacio de nombres Microsoft.SharePoint

SPContentTypeUsage

Otros recursos

Content Type IDs

Introduction to Content Types

Site and List Content Types

Base Content Type Hierarchy