0

我有一个 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
4

1 回答 1

1

您是否尝试过导出 Web 部件?单击 webpart 右上角的箭头,然后单击导出。它将导出为 XML 文件。查找元数据标签。例如:

<metaData>
  <type name="Microsoft.SharePoint.Portal.WebControls.KPIListWebPart, Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
  <importErrorMessage />
</metaData>

type 属性将为您提供程序集信息。如果它是自定义 Web 部件,则程序集名称应该大多不是 Microsoft.Sharepoint

于 2010-05-14T15:21:04.797 回答