在sharepoint中停用Web部件功能

时间:2010-09-01 09:04:08

标签: c# sharepoint sharepoint-2007 moss web-parts

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

部署(到网站集)时,您必须激活该功能才能使用此Web部件 - 到目前为止一直很好。

但是,在停用此功能时,Web部件仍保留在已添加功能的任何网站上,此外,它仍可在Web部件库中使用?

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

谢谢;)

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用以下代码执行此操作:

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 { }
    }
}