Ich versuche, eine Liste von Webparts zu erhalten, die auf einer Webseite in Sharepoint 3.0 bereitgestellt werden.
Antworten
Zu viele Anzeigen?
Magnus Johansson
Punkte
27363
Sie können den SPWebPartManager verwenden, um durch eine Liste von Webparts auf einer Seite zu iterieren.
Voir dieses MSDN-Beispiel .
EDIT: Dies ist vielleicht ein besseres Beispiel:
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);
}
}
}
}
}
Anders Rask
Punkte
862
Das programmatische Hinzufügen von Webparts ist einfach:
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();
}
}