2009-12-06 127 views
2

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

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

回答

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?

+0

我需要将WebPart添加到现有站点。我读了第一篇文章的代码。它提到了如何添加文档库Web部件,但是如何添加自定义开发的Web部件? – George2 2009-12-06 12:14:12

+0

谢谢!问题回答了! – George2 2009-12-07 13:05:58

2

这里的西拉的第一个链接的代码制定了多一点:

(注:此代码没有经过优化,例如,通过列表的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(); 
} 
+0

很酷,谢谢你! – George2 2009-12-07 13:06:34

相关问题