Sharepoint trouver où webpart est en cours d'utilisation
Est-il possible de faire des analyses sur les pages d'un webpart est en cours d'utilisation?
Je veux supprimer certains webparts de mon serveur sharepoint, mais je ne sais pas ce qui est en cours d'utilisation, et ce n'est pas en cours d'utilisation?
Est-il une solution pour cela?
Im courant à l'aide moss2007
Vous devez vous connecter pour publier un commentaire.
Chaque composant ajouté à une page est stockée dans la page elle-même. Il n'y a pas de magasin central qui enregistre où chaque composant est utilisé.
Cela signifie malheureusement que vous devez parcourir chaque page web dans le site pour récupérer cette information. Sur chaque page, vous devez alors vérifier l'assemblée les noms des composants webpart. Ajouter tous les composants webpart, vous trouverez à une liste qui est sortie une fois l'application terminée.
L'objet SPWeb vous permet de récupérer la partie web du gestionnaire pour chaque page avec SPWeb.GetLimitedWebPartManager(). Utiliser le SPLimitedWebPartManager.WebParts propriété pour récupérer une collection de composants webpart.
Alex réponse (itération sur les sites -> pages > composants webpart) est bonne et la "bonne" façon de faire cela, mais est assez cher, sur un très grand terrain.
Une alternative est une requête de base de données. Toutes les mises en garde habituelles s'appliquent sur l'accès à la base de données directement : ne pas changer quoi que ce soit, pourrait se briser à tout moment avec les service packs, etc etc, mais en supposant que nous sommes tous de grands garçons ici :-
D'abord, vous devez trouver le WebPartTypeId de la partie web votre intérêt dans
Ensuite l'exécuter sur TOUTES les bases de données de contenu.
Vous pouvez le faire dans l'autre sens (afin d'obtenir une liste de tous les WebPartTypeId est en cours d'utilisation), mais vous ne pouvez pas obtenir le nom de l'assemblage de la WebPartTypeId de hachage de sorte que vous avez à faire un peu de tri de la liste de recherche de composants webpart > typeid de l'.
Une autre façon de le faire est d'utiliser Gary Lapointe STSADM extensions,plus précisément enumPageWebParts
stsadm -o gl-enumpagewebparts -url "http://intranet/hr/pages/default.aspx" -verbose
Il ne renvoie les composants webpart à une page spécifique, mais vous pouvez appeler cela pour chaque page de votre site ou même d'ajouter une commande pour effectuer une itération sur toutes les pages du site.
http://stsadm.codeplex.com/
Et au cas où quelqu'un est à la recherche pour la même requête pour SharePoint 2013. Elle est ici. Le point de vue a été supprimé en 2013 et le nom de la table qui a le même champs de dbo.AllWebParts.
Je n'ai eu aucun succès générer le composant webpart de type id, par quelque méthode, simplement, je n'obtiens aucun résultat lorsque j'exécute la requête. C'est parce que l'id n'a jamais été correct.
Pour contourner ce problème, j'ai créé une nouvelle page et inséré une instance de la partie web qui m'intéressait. J'ai fait une requête par LeafName, en lui donnant la page que j'avais créé (le Meilleur pour le rendre unique!). Cette retourné un résultat unique et je pourrais ensuite utiliser la tp_WebPartTypeId il est retourné à sa requête l'ensemble de la base de données de contenu.
Donc, si vous avez de la difficulté à la génération de l'id, essayez cette approche à la place.