Add or Remove WebParts into SharePoint 2007 on runtime using SPLimitedWebPartManager

Wednesday, 8 July 2009 16:30 by myro

If you want to install or remove SharePoint's WebParts on runtime using SharePoint's object model, you need first of all get a reference to the page's SPLimitedWebPartManager. This reference can be easy obtained through the SPWeb object, invoking the GetLimitedWebPartManager() method. Here's a code snippet:

string AbsolutePageUrl = "http://YourSite/Page.aspx";
using (SPSite site = new SPSite(AbsolutePageUrl))
{
   using (SPWeb web = site.OpenWeb(AbsolutePageUrl))
   {
     SPLimitedWebPartManager SpWebPartManger = web.GetLimitedWebPartManager(AbsolutePageUrl,
     System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
   }
}

Once you got your SPLimitedWebPartManager you can add or remove your WebParts by calling the AddWebPart or DeleteWebPart methods.
Imagine that you have installed in the farm a custom WebPart and now you need to insert it or delete it from a SharePoint's page. Let's says that your WebPart is named MyWebPart and  declared as:

 public class MyWebPart : Microsoft.SharePoint.WebPartPages.WebPart

The code snippets that you need to use for accomplishing this task are:

Adding a WebPart

string AbsolutePageUrl = "http://YourSite/Page.aspx";
using (SPSite site = new SPSite(AbsolutePageUrl))
{
   using (SPWeb web = site.OpenWeb(AbsolutePageUrl))
   {
     SPLimitedWebPartManager SpWebPartManger = web.GetLimitedWebPartManager(AbsolutePageUrl,
     System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);


     // if MyWebPart is already installed, leave!
     foreach (var webpart in SpWebPartManger.WebParts)
     {
          if (webpart is MyWebPart)
              return;
     }
     // else add it in the bottom!
     SpWebPartManger.AddWebPart(new MyWebPart(), "Main",10);
     SpWebPartManger.Dispose();

   }
}

Removing a WebPart

string AbsolutePageUrl = "http://YourSite/Page.aspx";
using (SPSite site = new SPSite(AbsolutePageUrl))
{
   using (SPWeb web = site.OpenWeb(AbsolutePageUrl))
   {
     SPLimitedWebPartManager SpWebPartManger = web.GetLimitedWebPartManager(AbsolutePageUrl,
     System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);

      WebPart webPartToDelete = null;
      // let's locate the webpart first....
      foreach (WebPart webpart in SpWebPartMaanger.WebParts)
      {
            if (webpart is MyWebPart)
            {
                webPartToDelete = webpart;
                break;
            }
       }

       if (webPartToDelete != null)
             SpWebPartManger.DeleteWebPart(webPartToDelete);
       SpWebPartManger.Dispose();

   }
}

Have fun...

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags:   ,
Categories:   SharePoint 2007
Actions:   Bookmark and Share | Permalink | Comments (2) | Comment RSSRSS comment feed
If you consider this post usefull for your purposes, please consider visiting my sponsors to help me out with the myrocode.com maintenance. Thank you.

Comments