【发布时间】:2010-12-04 01:40:42
【问题描述】:
我正在尝试获取在 sharepoint 3.0 中的网页上部署的 webpart 列表。有没有办法从共享点内容数据库中检索它,或者我可以通过编程方式来检索它吗?
【问题讨论】:
标签: sharepoint wss-3.0 web-parts
我正在尝试获取在 sharepoint 3.0 中的网页上部署的 webpart 列表。有没有办法从共享点内容数据库中检索它,或者我可以通过编程方式来检索它吗?
【问题讨论】:
标签: sharepoint wss-3.0 web-parts
您可以使用 SPWebPartManager 遍历页面中的 Web 部件列表。
编辑: 这可能是一个更好的例子:
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);
}
}
}
}
}
【讨论】:
以编程方式添加 Web 部件很简单:
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();
}
}
【讨论】: