如何将WebPart添加到SharePoint网站中的所有页面?

时间:2009-12-06 10:19:40

标签: c# asp.net .net visual-studio-2008 sharepoint-2007

我正在使用SharePiont Server 2007 Enterprise和Windows Server 2008 Enterprise,我正在使用发布门户模板。我正在使用VSTS 2008 + C#+ .Net 3.5进行开发。我想知道如何将WebPart添加到SharePoint站点的所有页面?任何参考样品?

我想使用此WebPart在所有页面上显示一些常见信息(但信息可能会动态更改,这就是我选择WebPart的原因)。

2 个答案:

答案 0 :(得分:3)

根据您的具体情况,有两种方法可以做到这一点。

如果网站已经存在,您需要遍历网站,添加网络部分:

http://blogs.msdn.com/tconte/archive/2007/01/18/programmatically-adding-web-parts-to-a-page.aspx

如果站点不存在,则可以将Web部件添加到站点模板中:

How to add a web part page to a site definition?

答案 1 :(得分:2)

以下是Shiraz第一个链接的代码:

(注意:这段代码没有经过优化,例如,循环浏览List的Items集合不是你通常应该做的事情,但是看到这可能是一次性动作没有问题)

private void AddCustomWebPartToAllPages()
{
  using(SPSite site = new SPSite("http://sharepoint"))
  {
    GetWebsRecursively(site.OpenWeb());
  }
}

private void GetWebsRecursively(SPWeb web)
{
  //loop through all pages in the SPWeb's Pages library
  foreach(var item in web.Lists["Pages"].Items)
  {
    SPFile f = item.File;
    SPLimitedWebPartManager wpm = f.GetLimitedWebPartManager(PersonalizationScope.Shared);

    //ADD YOUR WEBPART
    YourCustomWebPart wp = new YourCustomWebPart();
    wp.YourCustomWebPartProperty = propertyValue;
    wpm.AddWebPart(wp, "ZONEID", 1);
    f.Publish("Added Web Part");
    f.Approve("Web Part addition approved");
  }
  // now do this recursively
  foreach(var subWeb in web.Webs)
  {
    GetWebsRecursively(subWeb);
  }
  web.Dispose();
}