Как добавить WebPart на все страницы сайта SharePoint? - PullRequest
2 голосов
/ 06 декабря 2009

Я использую SharePiont Server 2007 Enterprise с Windows Server 2008 Enterprise, и я использую шаблон портала публикации. Я занимаюсь разработкой с использованием VSTS 2008 + C # + .Net 3.5. Я хочу знать, как добавить веб-часть на все страницы сайта SharePoint? Какие-либо эталонные образцы?

Я хочу использовать эту веб-часть для отображения некоторой общей информации (но информация может динамически меняться, и именно поэтому я выбираю веб-часть) на всех страницах.

Ответы [ 2 ]

3 голосов
/ 06 декабря 2009

Есть два способа сделать это в зависимости от вашей ситуации.

Если сайты уже существуют, вам нужно перебрать сайты, добавив веб-часть:

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

Если сайты не существуют, вы можете добавить веб-часть в шаблон сайта:

Как добавить страницу веб-части в определение сайта?

2 голосов
/ 06 декабря 2009

Вот код из первой ссылки Шираз, разработанный немного больше:

(Примечание. Этот код не оптимизирован, например, циклически перебирая коллекцию элементов List, это не то, что вы обычно должны делать, но, поскольку это, вероятно, одноразовое действие, проблем нет)

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();
}
...