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
id
Tipo: Microsoft.SharePoint.SPContentTypeIdUn objeto SPContentTypeId que representa el identificador de tipo de contenido del tipo de contenido para eliminar.
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
Miembros SPContentTypeCollection
Espacio de nombres Microsoft.SharePoint