如何将 WebPart 添加到 SharePoint 网站中的所有页面?
Posted
技术标签:
【中文标题】如何将 WebPart 添加到 SharePoint 网站中的所有页面?【英文标题】:how to add a WebPart to all pages in a SharePoint site? 【发布时间】:2010-12-23 17:20:31 【问题描述】:我将 SharePint Server 2007 Enterprise 与 Windows Server 2008 Enterprise 一起使用,并且我正在使用发布门户模板。我正在使用 VSTS 2008 + C# + .Net 3.5 进行开发。我想知道如何将 WebPart 添加到 SharePoint 网站的所有页面?有参考样本吗?
我想用这个WebPart在所有页面上显示一些常用的信息(但信息可能会动态变化,这也是我选择WebPart的原因)。
【问题讨论】:
【参考方案1】:根据您的情况,有两种方法可以做到这一点。
如果站点已经存在,则需要遍历站点,添加 Web 部件:
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?
【讨论】:
我需要将 WebPart 添加到现有站点。我阅读了第一篇文章的代码。它提到了如何添加文档库 Web 部件,但是如何添加自定义开发的 Web 部件?【参考方案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();
【讨论】:
以上是关于如何将 WebPart 添加到 SharePoint 网站中的所有页面?的主要内容,如果未能解决你的问题,请参考以下文章
使用 WSPBuilder 将 JavaScript、CSS 和其他内容添加到 WebPart