Получить список веб-частей на странице - PullRequest
4 голосов
/ 05 октября 2009

Я пытаюсь получить список веб-частей, развернутых на веб-странице в sharepoint 3.0. Есть ли способ получить его из базы данных контента sharepoint или сделать это программным способом?

Ответы [ 2 ]

8 голосов
/ 06 октября 2009

Вы можете использовать SPWebPartManager для перебора списка веб-частей на странице.

См. этот пример MSDN .

EDIT: Это может быть лучший пример:

private static void GetWebParts()
{
  using (SPSite site = new SPSite("<YOUR SITE URL>"))
  {
    using (SPWeb web = site.OpenWeb())
    {
      SPFile file = web.GetFile("default.aspx"); // or what ever page you are interested in
      using (SPLimitedWebPartManager wpm = file.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
      {
        foreach (WebPart wp in wpm.WebParts)
        {
          Console.WriteLine("Web part: {0}", wp.Title);
        }
      }
    }
  }
}
0 голосов
/ 07 октября 2009

Программно добавить веб-части просто:

SPWeb site = SPContext.Current.Web;
SPFile page = web.GetFile("Pages/somepage.aspx");
using (SPLimitedWebPartManager webPartManager = page.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
    try
    {
        // logic to get web parts  here. 
        ContentEditorWebPart webPart = new ContentEditorWebPart();      
        webPart.Title = "Test Web Part"; 
        webPartManager.AddWebPart(webPart, "Zone 1", 0);
    }
    finally
    {
        // SPLimitedWebPartManager has known memory leak where it does not dispose SPRequest object in its SPWeb, so dispose it
        webPartManager.Web.Dispose();
    }
}
...