SPContentTypeCollection.Delete-Methode
Löscht den angegebenen Inhaltstyp aus der Auflistung.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Sub Delete ( _
id As SPContentTypeId _
)
'Usage
Dim instance As SPContentTypeCollection
Dim id As SPContentTypeId
instance.Delete(id)
public void Delete(
SPContentTypeId id
)
Parameter
id
Typ: Microsoft.SharePoint.SPContentTypeIdEin SPContentTypeId -Objekt, das die Inhaltstyp-ID des Inhaltstyps zu löschenden darstellt.
Ausnahmen
Ausnahme | Bedingung |
---|---|
ArgumentOutOfRangeException | Kein Inhaltstyp in der Auflistung hat die angegebenen Inhaltstyp-ID |
SPException | Der Inhaltstyp ist der letzte Inhaltstyp in einer Liste. Der letzte Inhaltstyp für eine Liste kann nicht gelöscht werden. |
SPException | Der Inhaltstyp ist der letzte Inhaltstyp in einer Liste. Der letzte Inhaltstyp für eine Liste kann nicht gelöscht werden. Der Inhaltstyp ist das übergeordnete Element eines Inhaltstyps Website oder Liste. Sie können keinen Inhaltstyp löschen, der verwendet wird. -ODER- Der Inhaltstyp gehört ein aktives Feature an. -ODER- Die Content-Type-Auflistung ist schreibgeschützt. |
SPContentTypeSealedException | Der angegebene Inhaltstyp ist versiegelt. |
SPContentTypeReadOnlyException | Der angegebene Inhaltstyp ist schreibgeschützt. |
Hinweise
Sie können einen Websiteinhaltstyp nicht löschen, wenn andere Website- oder Listeninhaltstypen auf ihm basieren. Sie sollten den Inhaltstyp zunächst aus allen Listen entfernen, die diesen Inhaltstyp verwenden, und alle untergeordneten Websiteinhaltstypen löschen, die auf dem Inhaltstyp basieren.
Sie können einen Inhaltstyp nicht aus einer Liste löschen, wenn die Liste Elemente des entsprechenden Inhaltstyps enthält. Dabei werden von SharePoint Foundation keine Elemente berücksichtigt, die an den Papierkorb gesendet wurden. Wenn diese Elemente wiederhergestellt werden, nachdem ihr Inhaltstyp aus der Liste gelöscht wurde, wird den Elementen der standardmäßige Inhaltstyp für diese Liste zugewiesen.
Bei der Angabe der ID eines Inhaltstyps zu löschen, denken Sie daran, dass die IDs der integrierten die IDs der Website- und Content-Typen abgeleitet werden Typen jedoch nicht dasselbe wie die integrierte Content-Typ-IDs sind. Die folgende Codezeile versucht z. B. den Item-Inhaltstyp löschen, indem Sie SPBuiltInContentTypeId.Item als Inhaltstyp-ID angeben:
list.ContentTypes.Delete(SPBuiltInContentTypeId.Item); // Throws an exception.
Der Code löst eine Ausnahme ArgumentOutOfRangeException , da der Listenauflistung Inhaltstyp einen Inhaltstyp mit der ID des SPBuiltInContentTypeId.Itemnicht enthalten ist. Es, jedoch einen Inhaltstyp enthalten, der über eine ID verfügt, die abgeleitet und ist daher eine enge Übereinstimmung mit der integrierten Content-Typ-ID Der folgende Code veranschaulicht die korrekte Vorgehensweise zum Suchen und Löschen der Liste Kopieren von Item-Inhaltstyp.
SPContentTypeId id = list.ContentTypes.BestMatch(SPBuiltInContentTypeId.Item);
list.ContentTypes.Delete(id);
Beispiele
Im folgenden Beispiel wird eine Konsolenanwendung gezeigt, mit der geprüft werden kann, ob in der aktuellen Website oder in den untergeordneten Websites ein überflüssiger Inhaltstyp verwendet wird. Wenn der Inhaltstyp nicht verwendet wird, wird er von der Anwendung gelöscht.
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();
}
}
}
Siehe auch
Referenz
SPContentTypeCollection Klasse
SPContentTypeCollection-Member
Microsoft.SharePoint-Namespace