Compartilhar via


SPContentTypeCollection.Delete method

Exclui o tipo de conteúdo especificado da coleção.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaração
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

Exceptions

Exception Condition
ArgumentOutOfRangeException

Nenhum tipo de conteúdo na coleção tem a identificação do tipo de conteúdo especificado.

SPException

O tipo de conteúdo é o último tipo de conteúdo em uma lista. O último tipo de conteúdo em uma lista não pode ser excluído.

SPException

O tipo de conteúdo é o último tipo de conteúdo em uma lista. O último tipo de conteúdo em uma lista não pode ser excluído.

O tipo de conteúdo é o pai de um tipo de conteúdo do site ou lista. Você não pode excluir um tipo de conteúdo que está em uso.

- ou -

O tipo de conteúdo é parte de um recurso ativo.

- ou -

A coleção de tipo de conteúdo é somente leitura.

SPContentTypeSealedException

O tipo de conteúdo especificado está lacrado.

SPContentTypeReadOnlyException

O tipo de conteúdo especificado é somente leitura.

Comentários

Você não pode excluir um tipo de conteúdo de site se ele está sendo usado como base para outros tipos de conteúdo do site ou lista. Primeiro você deve remover esse tipo de conteúdo de todas as listas que usá-lo e excluir todos os sites tipos de conteúdo filhos que sejam baseiam.

Você não pode excluir um tipo de conteúdo de uma lista, se a lista contém itens desse tipo de conteúdo. SharePoint Foundation não consideram os itens enviados para a Lixeira ao fazer essa determinação. Se os itens forem restaurados após o tipo de conteúdo será excluído da lista, os itens são atribuídos o tipo de conteúdo padrão para essa lista.

Ao especificar a identificação de um tipo de conteúdo a ser excluído, tenha em mente que as identificações dos tipos de conteúdo de site e lista são derivadas de IDs internos conteúdo de tipos, mas eles não são o mesmo que o tipo de conteúdo interno IDs. Por exemplo, a linha de código a seguir tenta excluir o tipo de conteúdo Item, especificando a SPBuiltInContentTypeId.Item como a identificação de tipo de conteúdo:

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

O código gera uma exceção de ArgumentOutOfRangeException porque a coleção de tipo de conteúdo da lista não inclui um tipo de conteúdo com uma identificação de SPBuiltInContentTypeId.Item. Ela, no entanto, incluir um tipo de conteúdo que tenha uma ID que é derivada e, portanto, uma forte correspondência com a identificação de tipo de conteúdo interno. O código a seguir ilustra a maneira correta de localizar e excluir a cópia da lista do tipo de conteúdo do Item.

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

Examples

O exemplo a seguir mostra um aplicativo de console que verifica se um tipo de conteúdo obsoleto está em uso no site da Web atual ou a todos os sites filho. Se o tipo de conteúdo não estiver em uso, o aplicativo exclui-lo.

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();
      }
   }
}

Ver também

Referência

SPContentTypeCollection class

SPContentTypeCollection members

Microsoft.SharePoint namespace

SPContentTypeUsage

Outros recursos

Content Type IDs

Introduction to Content Types

Site and List Content Types

Base Content Type Hierarchy