我在Windows Server 2008 Enterprise中使用SharePiont Server 2007 Enterprise,并使用发布门户模板。我正在开发使用VSTS 2008 + C#+ .Net 3.5。我想知道如何将WebPart添加到SharePoint网站的所有页面?任何参考样本?如何将WebPart添加到SharePoint网站中的所有页面?
我想使用此WebPart在所有页面上显示一些常见信息(但信息可能会动态更改,这也是我选择WebPart的原因)。
我在Windows Server 2008 Enterprise中使用SharePiont Server 2007 Enterprise,并使用发布门户模板。我正在开发使用VSTS 2008 + C#+ .Net 3.5。我想知道如何将WebPart添加到SharePoint网站的所有页面?任何参考样本?如何将WebPart添加到SharePoint网站中的所有页面?
我想使用此WebPart在所有页面上显示一些常见信息(但信息可能会动态更改,这也是我选择WebPart的原因)。
根据你的情况,有两种方法可以做到这一点。
如果已经存在的网站,你需要遍历的网站,加入网络的一部分:
http://blogs.msdn.com/tconte/archive/2007/01/18/programmatically-adding-web-parts-to-a-page.aspx
如果不存在的站点,那么你可以添加Web部件添加到网站模板:
这里的西拉的第一个链接的代码制定了多一点:
(注:此代码没有经过优化,例如,通过列表的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();
}
很酷,谢谢你! – George2 2009-12-07 13:06:34
我需要将WebPart添加到现有站点。我读了第一篇文章的代码。它提到了如何添加文档库Web部件,但是如何添加自定义开发的Web部件? – George2 2009-12-06 12:14:12
谢谢!问题回答了! – George2 2009-12-07 13:05:58