代码之家  ›  专栏  ›  技术社区  ›  Dynde

正在停用SharePoint中的Web部件功能

  •  4
  • Dynde  · 技术社区  · 14 年前

    我使用wspbuilder工具开发了一个Web部件(具有功能的Web部件)。

    部署(到网站集)时,必须激活该功能才能使用此Web部件-目前为止还不错。

    但是,当停用此功能时,Web部件仍保留在添加它的任何网站上,而且Web部件库中仍然提供它?

    这是预期行为吗?是否无法从网站集中的所有子网站中删除Web部件,也无法将其从Web部件库中删除?

    谢谢;

    3 回复  |  直到 12 年前
        1
  •  2
  •   Tom Vervoort    14 年前

    这是预期行为。您可以自动删除它,但您必须编写一个功能接收器来完成这一点。

    有关为SharePoint 2007创建功能接收器的详细信息: http://sharepointdevwiki.com/display/public/How+to+add+a+Feature+Receiver+to+a+Feature

        2
  •  0
  •   Vladi Gubler    14 年前

    创建Web部件时,wspbuilder会自动将删除事件接收器添加到功能中。非常方便。

        3
  •  0
  •   Adi Lester    12 年前

    您可以使用以下代码来完成此操作:

    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        SPSite site = properties.Feature.Parent as SPSite;
    
        if (site != null)
        {
            try
            {
                SPList wpGallery = site.GetCatalog(SPListTemplateType.WebPartCatalog);
                SPQuery query = new SPQuery();
                query.Query = “<Where><Eq><FieldRef Name=’FileLeafRef’ /><Value Type=’Text’>webpartname.webpart</Value></Eq></Where>”;
                SPListItemCollection items = wpGallery.GetItems(query);
    
                if (items.Count > 0)
                {
                    items[0].Delete();
                }
            }
            catch { }
        }
    }