Partager via


SPContentType.Delete - Méthode

Supprime le type de contenu.

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

Syntaxe

'Déclaration
Public Sub Delete
'Utilisation
Dim instance As SPContentType

instance.Delete()
public void Delete()

Exceptions

Exception Condition
SPException

La collection parent du type de contenu est en lecture seule.

- ou -

Le type de contenu est le dernier type de contenu pour le SPList sur lequel se trouve la collection parent du type de contenu.

- ou -

Le type de contenu est en cours d'utilisation.

- ou -

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

ArgumentOutOfRangeException

Le type de contenu a déjà été supprimé de sa collection parente.

SPContentTypeSealedException

Le type de contenu est sealed.

SPContentTypeReadOnlyException

Le type de contenu est en lecture seule.

Remarques

Vous ne pouvez pas supprimer un type de contenu de site s'il est utilisé comme base pour d'autres types de contenu de site ou de liste. Vous devez d'abord supprimer ce type de contenu à partir de toutes les listes de l'utiliser et supprimez tous les types de contenu enfant qui sont basés sur lui.

Vous ne pouvez pas supprimer un type de contenu à partir d'une liste si cette liste contient des éléments de ce type de contenu. SharePoint Foundation ne considère pas les éléments envoyés dans la Corbeille lorsque cette détermination. Si les éléments d'un type de contenu spécifique sont restaurés à une liste après que leur type de contenu a été supprimé de cette liste, ces éléments sont affectés par le type de contenu par défaut pour cette liste.

Conseil

Vous pouvez souhaiter considérer une alternative à la suppression d'éléments simplement parce que leur type de contenu est obsolète. Essayez de laisser le démodées type en place et si sa propriété Hiddentruede contenu. Ce supprime le type de contenu à partir du menu Nouveau sur n'importe quelle liste où taper le contenu est utilisé, empêchant ainsi les utilisateurs d'ajouter de nouveaux éléments de ce type de contenu à la liste tout en conservant le contenu des éléments existants.

Exemples

L'exemple suivant se compose de deux méthodes à partir d'une application plus importante. La première méthode, DeleteListContentType, accepte un objet SPContentType comme son seul argument. La méthode vérifie d'abord que l'objet est dérivé à partir de la collection de type de contenu d'une liste. La méthode appelle ensuite une seconde méthode, DeleteListItems, en passant l'ID de type de contenu et de la liste en tant qu'arguments. La deuxième méthode recherche dans la liste des éléments de type de contenu spécifié et les supprime. Lorsque le contrôle est retourné à la méthode DeleteListContentType , il supprime le type de contenu.

Function DeleteListContentType(ByRef ct As SPContentType) As Boolean
  ' Make sure we have a content type.
  If ct Is Nothing Then
     Throw New ArgumentException("Content type is null.")
  End If

  ' Make sure we have a list content type.
  If ct.ParentList Is Nothing Then
     Return False
  End If

  ' Delete list items of this content type.
  DeleteListItems(ct.ParentList, ct.Id)

  ' Check for read-only and sealed.
  If ct.ReadOnly Then
     ct.ReadOnly = False
  End If
  If ct.Sealed Then
     ct.Sealed = False
  End If

  ' Delete it.
  ct.Delete()
  Return True
End Function

Sub DeleteListItems(ByRef list As SPList, ByVal id As SPContentTypeId)
   Dim items As SPListItemCollection =  list.Items 
   Dim count As Integer =  items.Count  'Count will change
   Dim i As Integer
   For  i = count -1 To  0 Step  i - 1
      Dim item As SPListItem =  items(i) 
      If item.ContentType.Id = id Then
         item.Delete()
      End If
   Next
   list.Update()
End Sub
static bool DeleteListContentType(SPContentType ct)
{
   // Make sure we have a content type.
   if (ct == null)
      throw new ArgumentException("Content type is null.");

   // Make sure we have a list content type.
   if (ct.ParentList == null)
      return false;

   // Delete list items of this content type.
   DeleteListItems(ct.ParentList, ct.Id);

   // Check for read-only and sealed.
   if (ct.ReadOnly)
      ct.ReadOnly = false;
   if (ct.Sealed)
      ct.Sealed = false;

   // Delete it.
   ct.Delete();
   return true;
}

static void DeleteListItems(SPList list, SPContentTypeId id)
{
   SPListItemCollection items = list.Items;
   int count = items.Count;  //Count will change
   for (int i = count -1; i >= 0; i--) 
   {
      SPListItem item = items[i];
      if (item.ContentType.Id == id)
         item.Delete();
   }
   list.Update();
}

Voir aussi

Référence

SPContentType classe

SPContentType - Membres

Microsoft.SharePoint - Espace de noms

Delete

Hidden

Autres ressources

Content Type Deletion