Freigeben über


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

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

SPContentTypeUsage

Weitere Ressourcen

Content Type IDs

Introduction to Content Types

Site and List Content Types

Base Content Type Hierarchy