Using WebPartPage, WebPartManager, and WebPart

There was a small question in the SharePoint development newsgroups that alluded to whether it was possible to use the SharePoint WebPartPage and SPWebPartManager objects in order to construct a small iteration through all the WebParts that were placed within an arbitrary WebPart page in a SharePoint instance and search for a specific WebPart type. The objects that will be exposed in this code example are pretty straightforward, notably:

WebPartPage – Represents a SharePoint WebPart page

SPWebPartManager – Derived from the ASP.NET 2.0 WebPart manager, the SPWebPartManager object manages all the WebParts and WebPart zones on a page.

WebPart – Represents, well you know, a frickin WebPart on the page

In this example, I will show you how to use the aforementioned objects, and then show you to how to build the loop that was the main part of the persons query in the newsgroups.

Here is the code, in this I will test for the most standard WebPart type, a ListViewWebPart, since it is orthodox and out-of-the-box.


if (!string.IsNullOrEmpty(this.SPWebPartManager))

WebPartPage l_oPage = (WebPartPage) this.Page;
SPWebPartManager l_oManager = (SPWebPartManager) l_oPage.Master.FindControl(this.SPWebPartManager);
if (l_oManager.DisplayMode.Name.Equals(WebPartManager.BrowseDisplayMode.Name))
foreach (WebPart l_oPart in l_oManager.WebParts)
if (l_oPart.GetType() != typeof(ListViewWebPart))
// Perform some action after the type test is complete, depending on your type return



  1. Elena says:

    I am trying to connect two DataFormWebPart. Any ideas?
    I get SPLimitedWebPartManager, but it is not helpfull. Please, help me!

  2. smith says:

    Hi Elena,
    you should do something yourself too rather than asking here and there …hopefully now you will look in your problem more seriously :)

  3. angela says:

    smith is right in saying so…!! ;)

  4. Terry says:

    big assumption there, smith

Leave a Reply

Your email address will not be published. Required fields are marked *