web-dev-qa-db-fra.com

Impossible de supprimer le type de contenu SharePoint 2010 "Type de contenu utilisé".

J'ai essayé toutes les recommandations sur le Web, en vain.

J'ai écrit une application console en suivant les instructions suivantes: http://msdn.Microsoft.com/en-us/library/Microsoft.sharepoint.spcontenttypecollection.delete.aspx

"Usages.Count" est = 0. Cependant, lorsqu'il essaie de supprimer le type de contenu, une exception se produit:

"Le type de contenu est en cours d'utilisation."

Ceci est une toute nouvelle installation (de développement). J'ai créé un site de test dans SP Designer, créé un type de contenu, puis une liste. Ensuite, j'ai supprimé la liste, l'ai retirée de la corbeille et j'ai essayé de supprimer le type de contenu ...... Ugh.

36
Shayne

J'ai été frustré par ce problème jusqu'à ce que je trouve votre commentaire. Excellent conseil.

  1. Supprimer de la corbeille de site.
  2. Supprimer de la collection de sites> Paramètres du site> Administration de la collection de sites> Corbeille.
  3. Supprimer des éléments de la corbeille de l'utilisateur final.
  4. Supprimer de "Supprimé de la corbeille de l'utilisateur final".

C'est beaucoup de recyclage! Une fois terminé, j'ai pu supprimer le type de contenu.

72
Erik Madsen

En plus des bacs de recyclage, vous trouverez également la page "Gérer les fichiers sans version archivée" sous "Autorisations et gestion" dans les bibliothèques de documents - les fichiers qu’ils contiennent peuvent également empêcher la suppression d’un type de contenu.

6
Leak

ce script powershell forme ce post a également travaillé pour moi 

$siteURL = "The Site url"
$contentType = "Content type Name"

$web = Get-SPWeb $siteURL
$ct = $web.ContentTypes[$contentType]

if ($ct) {
$ctusage = [Microsoft.SharePoint.SPContentTypeUsage]::GetUsages($ct)
      foreach ($ctuse in $ctusage) {
        $list = $web.GetList($ctuse.Url)
        $contentTypeCollection = $list.ContentTypes;
        $contentTypeCollection.Delete($contentTypeCollection[$ContentType].Id);
        Write-Host "Deleted $contentType content type from $ctuse.Url"
        }
$ct.Delete()
Write-Host "Deleted $contentType from site."

} else { Write-Host "Nothing to delete." }

$web.Dispose()
6
Mahmoud Farahat
 

    using System;
    using System.Collections.Generic;
    using Microsoft.SharePoint;

    namespace Test
    {
       class ConsoleApp
       {
          static void Main(string[] args)
          {
             using (SPSite siteCollection = new SPSite("http://localhost"))
             {
                using (SPWeb webSite = siteCollection.OpenWeb())
                {
                   // Get the obsolete content type.
                   SPContentType obsolete = webSite.ContentTypes["Test"];

                   // We have a content type.
                   if (obsolete != null) 
                   {
                      IList usages = SPContentTypeUsage.GetUsages(obsolete);

                      // It is in use.
                      if (usages.Count > 0) 
                      {
                         Console.WriteLine("The content type is in use in the following locations:");
                         foreach (SPContentTypeUsage usage in usages)
                            Console.WriteLine(usage.Url);
                      }

                      // The content type is not in use.
                      else 
                      {

                         // Delete it.
                         Console.WriteLine("Deleting content type {0}...", obsolete.Name);
                         webSite.ContentTypes.Delete(obsolete.Id);
                      }
                   }

                   // No content type found.
                   else 
                   {
                      Console.WriteLine("The content type does not exist in this site collection.");
                   }
                }
             }
             Console.Write("\nPress ENTER to continue...");
             Console.ReadLine();
          }
       }
    }

Créez une application console avec le code ci-dessus et exécutez ce projet. Ce code vous indiquera les bibliothèques dans lesquelles les types de contenu sont attachés. Ensuite, allez simplement dans ces bibliothèques et supprimez les types de contenu attachés. Enfin, supprimez finalement le type de contenu de Actions du site -> Paramètres du site -> Types de contenu de site ou utilisez le code ci-dessus pour supprimer le type de contenu.

Cela a fonctionné pour moi, j'espère que cela fonctionnera aussi pour vous !!! Merci.

0
Zakir HC