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
Microsoft.SharePoint - Espace de noms