Verschieben eines Webparts in eine andere Zone auf einer Seite
-
16-10-2019 - |
Frage
Wie verschiebe ich programmgesteuert ein Webpart von einer Zone auf eine Seite auf eine andere?
Ich habe mehrere Websites, die ich durch jede Site durchlaufen und die Seite aktualisieren möchte.
Lösung
Verwenden Sie das SplimitedWebPartManager.MoveWebPart Methode:
string zoneId = "TopZone"; // ID of the WebPartZone control
string zoneIndex = 0; // Location of web part within zone
string webPartTitle = "Sales Tips"; // Title of web part
string filename = "default.aspx"; // Filename relative to SPWeb object
using (SPLimitedWebPartManager webPartManager =
site.GetLimitedWebPartManager(filename, PersonalizationScope.Shared))
{
try
{
foreach (WebPart webPart in webPartManager.WebParts)
{
if (webPart.Title == webPartTitle)
{
webPartManager.MoveWebPart(webPart, zoneId, zoneIndex);
webPartManager.SaveChanges(webPart);
break;
}
}
}
finally
{
webPartManager.Web.Dispose();
}
}
Andere Tipps
Seien Sie zusätzlich zu der Antwort von Alex vorsichtig, wenn Sie Ihre Site -Sammlungen und Websites iterieren. Wenn Sie dies beispielsweise aus einer Konsolenanwendung tun, in der Sie Ihren eigenen Kontext festlegen müssen, werden Sie beim Iterieren (z. B. Websites.Allwebs) Ihren eigenen Kontext sehr schnell ausgehen, wenn Sie vergessen, Ihre Splines- und SPWEB -Objekte zu entsorgen.
Lesen und verstehen Sie die Entsendungsrichtlinien auf MSDN:Best Practices: Verwendung von verfügbaren Windows SharePoint Services -Objekten