SPContentTypeCollection.Delete - Méthode

Supprime le type de contenu spécifié de la collection.

Espace de noms :  Microsoft.SharePoint
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Public Sub Delete ( _
    id As SPContentTypeId _
)
'Utilisation
Dim instance As SPContentTypeCollection
Dim id As SPContentTypeId

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

Paramètres

Exceptions

Exception Condition
ArgumentOutOfRangeException

Aucun type de contenu dans la collection n'a l'ID de type de contenu spécifié.

SPException

Le type de contenu est le dernier type de contenu dans une liste. Le dernier type de contenu sur une liste ne peut pas être supprimé.

SPException

Le type de contenu est le dernier type de contenu dans une liste. Le dernier type de contenu sur une liste ne peut pas être supprimé.

Le type de contenu est le parent d'un type de contenu de site ou de liste. Vous ne pouvez pas supprimer un type de contenu est en cours d'utilisation.

- ou -

Le type de contenu fait partie d'une fonctionnalité active.

- ou -

La collection de type de contenu est en lecture seule.

SPContentTypeSealedException

Le type de contenu spécifié est sealed.

SPContentTypeReadOnlyException

Le type de contenu spécifié est en lecture seule.

Remarques

Vous ne pouvez pas supprimer un type de contenu de site s'il est utilisé en tant que base pour d'autres types de contenu de site ou de liste. Vous devez tout d'abord supprimer ce type de contenu de toutes les listes qui l'utilisent, puis supprimer tous les types de contenu de site enfants basés sur celui-ci.

Vous ne pouvez pas supprimer un type de contenu d'une liste qui comporte des éléments provenant de ce type de contenu. SharePoint Foundation ne tient pas compte des éléments envoyés à la Corbeille dans ce type de situation. Si ces éléments sont restaurés une fois que leur type de contenu est supprimé de la liste, ils reçoivent le type de contenu par défaut correspondant à cette liste.

Lorsque vous spécifiez l'ID d'un type de contenu à supprimer, gardez à l'esprit que les ID de site et liste de types de contenu sont dérivées de l'ID d'intégré contenu types, mais ils ne sont pas le même que l'ID de type de contenu intégré. Par exemple, la ligne de code suivante tente de supprimer le type de contenu d'élément en spécifiant SPBuiltInContentTypeId.Item comme code de type de contenu :

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

Le code lève une exception ArgumentOutOfRangeException parce que la collection de type de contenu de la liste n'inclut pas un type de contenu avec un ID de SPBuiltInContentTypeId.Item. Il est le cas, toutefois, inclure un type de contenu ayant l'ID qui est dérivé d'et est par conséquent une correspondance étroite avec l'ID de type de contenu intégré. Le code suivant illustre la façon correcte de les rechercher et de supprimer la copie de la liste l'élément du type de contenu.

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

Exemples

L'exemple suivant montre une application console qui vérifie si un type de contenu obsolète est utilisé dans le site Web actif ou tous les sites enfants. Si le type de contenu n'est pas en cours d'utilisation, l'application supprime.

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

Voir aussi

Référence

SPContentTypeCollection classe

SPContentTypeCollection - Membres

Microsoft.SharePoint - Espace de noms

SPContentTypeUsage

Autres ressources

Content Type IDs

Introduction to Content Types

Site and List Content Types

Base Content Type Hierarchy