As the question says - is there a way to determine which pages are including my web part?
From stackoverflow
-
If you're looking for code, I've got something for you. If you'd like to find all Content Query web parts then you would call my code like this:
FindWebPart("http://server.com/", "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart");Here's the code:
public static void FindWebPart(string siteCollectionUrl, string webPartName) { using (SPSite siteCollection = new SPSite(siteCollectionUrl)) { using (SPWeb rootSite = siteCollection.OpenWeb()) { FindWebPartHelper(rootSite, webPartName); } } } public static void FindWebPartHelper(SPWeb site, string webPartName) { // Search for web part in Pages document library SPList pagesList = null; try { pagesList = site.Lists["Pages"]; } catch (ArgumentException) { // List not found } if (null != pagesList) { SPListItemCollection pages = pagesList.Items; foreach (SPListItem page in pages) { SPFile file = page.File; using (SPLimitedWebPartManager mgr = file.GetLimitedWebPartManager(PersonalizationScope.Shared)) { try { SPLimitedWebPartCollection webparts = mgr.WebParts; foreach (System.Web.UI.WebControls.WebParts.WebPart wp in webparts) { // Here perform the webpart check // For instance you could identify the web part by // its class name if (webPartName == wp.GetType().ToString()) { // Found a match! Now do something... Console.WriteLine("Found web part!"); } } } finally { // Needs to be disposed mgr.Web.Dispose(); } } } } // Check sub sites SPWebCollection subSites = site.Webs; foreach (SPWeb subSite in subSites) { try { FindWebPartHelper(subSite, webPartName); } finally { // Don't forget to dispose! subSite.Dispose(); } } }Ofcourse you can make little changes to this code. Currently it does a string comparison, but it's easy to do it in a more typed way. Have fun!
nailitdown : champion, thanks for the helpLeonZandman : Glad to be of help :-)LeonZandman : By the way, shouldn't you mark my answer as being THE answer, by clicking the check mark?Scott Price : Please note, this code only checks pages in the "Pages" document library. Pages stored in other document libraries or the default.aspx pages for sites (yoursite.com/site/default.aspx) will not be checked without some modifications. Thanks for the post, was very helpful for me and saved me some time digging through the API.nailitdown : yes i should - apologies for the delay there stingray
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.