我使用wspbuilder工具(带有功能的Web部件)开发了一个Web部件。
部署(到网站集)时,您必须激活该功能才能使用此Web部件 - 到目前为止一直很好。
但是,在停用此功能时,Web部件仍保留在已添加功能的任何网站上,此外,它仍可在Web部件库中使用?
这是预期的行为吗?是否无法从网站集中的所有子网站中删除Web部件,还将其从Web部件库中删除?
谢谢;)
答案 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 { }
}
}