我有一个 SharePoint 2007 MOSS 实例,我正在执行一项事实调查任务。有多个开发人员,开发多个 webpart 并部署它们(使用 VS2005/2008 SharePoint Extensions)。
我想也许我可以查看我网站的“Web 部件库”列表中的字段,然后通过“修改者”查看,但看起来开发人员的名字以某种方式出现在一些开箱即用的 Web 部件上,在我知道是定制开发的那些上,他们说“系统帐户” - 所以查看这个列表中的那个字段是不行的。
我当时想,也许我可以查看每个 webpart 分配到的“组”,但看起来它们被任意分配到许多不同的组,不一致 - 所以使用那条信息是行不通的。
这是我的代码,用于循环并获取所有 webpart 的名称。我可以在 webpart 的列表项上访问任何属性来告诉我它是否是自定义开发的 webpart?有什么方法可以区分自定义 Web 部件和开箱即用的 Web 部件吗?还有另一种方法可以做到这一点吗?
#region Misc Site Collection Methods
public static List<string> GetAllWebParts(string connectedSPInstanceUrl)
{
List<string> lstWebParts = new List<string>();
try
{
using (SPSite site = new SPSite(connectedSPInstanceUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Web Part Gallery"];
foreach (SPListItem item in list.Items)
{
lstWebParts.Add(item.Name);
}
}
}
}
catch (Exception ex)
{
lstWebParts.Add("Error");
lstWebParts.Add("Message: " + ex.Message);
lstWebParts.Add("Inner Exception: " + ex.InnerException.ToString());
lstWebParts.Add("Stack Trace: " + ex.StackTrace);
}
return lstWebParts;
}
#endregion