38 votes

Impossible de supprimer SharePoint 2010 ContentType "type de Contenu en cours d'utilisation."

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

J'ai écrit une application de console par ces instructions: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttypecollection.delete.aspx

Les "Usages.Comte" est = 0. Pourtant, lorsqu'il tente de supprimer le Type de Contenu que j'obtiens une Exception:

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

C'est une marque de nouveau (développement) installer. J'ai créé un site de test en SP Designer, a créé un Type de Contenu,puis une liste. Ensuite, j'ai enlevé de la liste, l'a supprimé de la Corbeille et essayé de supprimer le type de contenu...... Ugh.

74voto

Erik Madsen Points 464

J'ai été frustré par cette question jusqu'à ce que j'ai trouvé votre commentaire. D'excellents conseils.

  1. Supprimer à partir du site de la corbeille.
  2. Supprimer à partir du Site de la Collection du Site > Paramètres du Site > Administration de la Collection de > Corbeille.
  3. Supprimer de la Corbeille de l'Utilisateur Final des Éléments.
  4. Suppression de "Supprimés De la Corbeille de l'Utilisateur Final."

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

6voto

Mahmoud Farahat Points 1716

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()

0voto

Zakir HC Points 122
  

    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éer une Application de Console avec le code ci-dessus et lancer ce projet. Ce code va vous dire les bibliothèques dans lesquelles ces types de contenu sont attachés. Alors allez simplement que les bibliothèques et les supprimer le joint types de contenu. Puis, enfin, supprimer le type de contenu de Site de des Actions du Site> Paramètres -> Types de Contenu de Site ou vous pouvez utiliser le code ci-dessus ainsi à supprimer le type de contenu.

Cela a fonctionné pour moi, l'espoir il peut également travailler pour vous !!! Merci.

0voto

Bugra Postaci Points 21

Veuillez vérifier les éléments suivants de l'article ; http://blog.bugrapostaci.com/2014/07/02/unable-to-delete-a-content-type/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X