Compartir a través de


Eliminación de tipos de contenido

Última modificación: lunes, 01 de noviembre de 2010

Hace referencia a: SharePoint Foundation 2010

Disponible en SharePoint Online

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. Sin embargo, Microsoft SharePoint Foundation no considera los elementos que se encuentran en la papelera de reciclaje. Si esos elementos se vuelven a almacenar una vez eliminado su tipo de contenido de la lista, a dichos elementos se les asigna el tipo de contenido predeterminado para la lista.

Uso del modelo de objetos para eliminar un tipo de contenido

Para quitar un tipo de contenido de la colección de tipos de contenido de una lista o biblioteca de documentos, en primer lugar debe obtener acceso a la colección en la propiedad ContentTypes del objeto SPList (servidor) o del objeto List (cliente). A continuación, llame al método Delete; para ello, pase una estructura SPContentTypeId (servidor) o la estructura ContentTypeId (cliente) que identifique el tipo de contenido que desea eliminar.

Para quitar un tipo de contenido de una colección de sitios, obtenga acceso a la colección en la propiedad ContentTypes del objeto SPWeb (servidor) o del objeto Web (cliente). A continuación, llame al método Delete.

Nota de precauciónPrecaución

Tanto el objeto SPWeb (servidor) como el objeto Web (cliente) tienen una propiedad AvailableContentTypes que devuelve una colección de tipos de contenido. Esta colección es de solo lectura. No se pueden eliminar objetos que se encuentren en ella. Esto se debe a que la colección contiene todos los tipos de contenido que están disponibles en el sitio actual, no solo aquellos que están definidos en el sitio actual.

En ambos casos, debe tener en cuenta que no podrá eliminar un tipo de contenido que se encuentre en uso. Si intenta quitar un tipo de contenido de una lista, en primer lugar debe asegurarse de que ningún elemento de lista use el tipo de contenido. Un modo de hacerlo consiste en procesar una iteración en los elementos de la lista y buscar el valor de la propiedad ContentType de cada elemento. Si intenta quitar un tipo de contenido de la colección de sitios donde está definido, debe asegurarse de que el método GetUsages devuelva una lista vacía, es decir, que el tipo de contenido no se use en ninguna lista y que no sea el elemento primario de un tipo de contenido secundario.

Ejemplo

En el siguiente ejemplo se muestra una aplicación de consola que comprueba si un tipo de contenido obsoleto se encuentra en uso en el sitio web actual o en algún sitio secundario. Si el tipo de contenido no se encuentra en uso, la aplicación lo eliminará.

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"];

               // We have a content type.
               if (obsolete != null) 
               {
                  IList<SPContentTypeUsage> usages = SPContentTypeUsage.GetUsages(obsolete);

                  // It is in use.
                  if (usages.Count > 0) 
                  {
                     Console.WriteLine("The content type is in use in the following locations:");
                     foreach (SPContentTypeUsage usage in usages)
                        Console.WriteLine(usage.Url);
                  }

                  // The content type is not in use.
                  else 
                  {

                     // Delete it.
                     Console.WriteLine("Deleting content type {0}...", obsolete.Name);
                     webSite.ContentTypes.Delete(obsolete.Id);
                  }
               }

               // No content type found.
               else 
               {
                  Console.WriteLine("The content type does not exist in this site collection.");
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}
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 obsolete content type.
            Dim obsolete As SPContentType = webSite.ContentTypes("Test")

            ' We have a content type
            If obsolete IsNot Nothing Then 
               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

               ' It is not in use.
               Else 

                  ' Delete it.
                  Console.WriteLine("Deleting content type {0}...", obsolete.Name)
                  webSite.ContentTypes.Delete(obsolete.Id)
               End If

            ' No content type found.
            Else 
               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

Vea también

Referencia

SPContentTypeUsage

Conceptos

Introducción a los tipos de contenido

Creación de tipos de contenido

Actualización de tipos de contenido secundarios