题
如何在页面上以编程方式将WebPart从一个区域移动到另一个区域?
我有多个网站,我想遍历每个站点并更新页面。
解决方案
使用 splimitedwebpartmanager.movewebpart 方法:
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();
}
}
其他提示
除了来自Alex的答案之外,当您迭代网站收集和站点时,请小心。如果您从例如必须建立自己的上下文的控制台应用程序中执行此操作,那么如果您忘记在迭代时忘记处理spsite和spweb对象(例如,sites.allwebs),您将非常快地用光内存。
阅读并了解有关MSDN的处置指南:最佳实践:使用一次性Windows SharePoint服务对象