【问题标题】:how to add a WebPart to all pages in a SharePoint site?如何将 WebPart 添加到 SharePoint 网站中的所有页面?
【发布时间】:2010-12-23 17:20:31
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-23
      • 2015-12-12
      • 2013-08-31
      • 1970-01-01
      • 2011-02-19
      • 2018-03-07
      • 1970-01-01
      • 2010-11-12
      • 2011-06-23
      相关资源
      最近更新 更多