Get a list of web parts per page

I am trying to get a list of websites deployed on a web page in sharepoint 3.0. Is there a way to get it from the sharepoint content database or can I do it programmatically?

+4
source share
2 answers

You can use SPWebPartManager to iterate through the list of web parts on the page.

See this MSDN example .

EDIT: This may be the best example:

private static void GetWebParts() { using (SPSite site = new SPSite("<YOUR SITE URL>")) { using (SPWeb web = site.OpenWeb()) { SPFile file = web.GetFile("default.aspx"); // or what ever page you are interested in using (SPLimitedWebPartManager wpm = file.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)) { foreach (WebPart wp in wpm.WebParts) { Console.WriteLine("Web part: {0}", wp.Title); } } } } } 
+8
source

Adding web parts is programmatically simple:

 SPWeb site = SPContext.Current.Web; SPFile page = web.GetFile("Pages/somepage.aspx"); using (SPLimitedWebPartManager webPartManager = page.GetLimitedWebPartManager(PersonalizationScope.Shared)) { try { // logic to get web parts here. ContentEditorWebPart webPart = new ContentEditorWebPart(); webPart.Title = "Test Web Part"; webPartManager.AddWebPart(webPart, "Zone 1", 0); } finally { // SPLimitedWebPartManager has known memory leak where it does not dispose SPRequest object in its SPWeb, so dispose it webPartManager.Web.Dispose(); } } 
-2
source

All Articles