Je rencontre actuellement des problèmes pour supprimer un type de contenu d'une liste Sharepoint par programmation. Ce que je voulais faire, c'est que je veux installer une version plus récente d'un type de contenu personnalisé (il a des champs supplémentaires), j'ai donc choisi de supprimer l'original et de rajouter le dernier. Voici le code:Impossible de supprimer le type de contenu d'une liste Sharepoint par programme
bool requireUpdate = false
SPContentType tempCtId = existingWeb.AvailableContentTypes["Item"];
List<SPListITem> itemsWithTEmpCt = new List<SPListItem>();
foreach (SPListItem item in listToUpdate.Items)
{
if (item.ContentType.Name.Equals(ctToUpdate))
{
item["Content Type"] = "Item";
itemsWithTempCt.Add(item);
requireUpdate = true;
}
}
if (requireUpdate)
{
foreach (SPListItem itemWithTempCt in itemsWithTempCt)
{
itemWithTEmpCt.File.CheckOut();
itemWithTempCt.Update();
itemWithTEmpCt.File.CheckIn("converted ct");
}
}
// reset vars
requireUpdate = false;
itemsWithTempCt = new List<SPListItem>();
// changing the folder's ct, if any
foreach (SPListItem folder in listToUpdate.Folders)
{
if (folder.ContentType.Name.Equals(ctToUpdate))
{
folder["Content Type"] = "Item";
itemsWithTempCt.Add(folder);
requireUpdate = true;
}
}
if (requireUpdate)
{
foreach (SPListItem itemWithTempCt in itemsWithTempCt)
{
itemWithTempCt.Update();
}
}
listToUpdate.ContentTypes[ctToUpdate].Delete(); //<--- exception here
SPContentType contentTypeToSet = web.AvailableContentTypes[ctToUpdate];
listToUpdate.ContentTypes.Delete(tempCtId.Id);
listToUpdate.ContentTypes.Add(contentTypeToSet);
//....
moi avons décidé d'ajouter un type de contenu de l'article, car il n'y avait que 1 type de contenu sur cette liste (je ne peux donc pas le supprimer). Ce qui est arrivé est que la ligne où il est dit « exception ici », une exception a été levée:
Content Type is still in use.
Après quelques googler, j'ai essayé beaucoup de scénarios différents, mais aucun d'entre eux a travaillé jusqu'à présent:
-les dossiers qui ont la version == 1.0 n'ont pas mis à jour leur type de contenu ... donc le type de contenu est toujours utilisé (assez juste).
-Tous les documents et dossiers ont leur type de contenu défini sur "Élément", mais le type de contenu est toujours en cours d'utilisation. Rien dans la corbeille, pas de version mineure des fichiers (la doc lib ne le permet pas), pas de problèmes d'autorisation.
-les éléments sont dans un flux de travail, bien qu'ils aient été terminés.
La liste est située au niveau du site, par ex. web.ParentWeb vous obtiendra la liste. Je n'ai absolument aucune idée de ce qui peut encore être utilisé avec le type de contenu. Est-ce que quelqu'un a des idées/ou a rencontré un tel problème avant?
Merci.
J'ai regardé les fichiers que vous placez votre commande suggérez, et n'a pas pu trouver les fichiers. – BeraCim