Tuesday, December 28, 2010

Delete web part from the web part gallery

In case you want to delete the web part as soon as a feature is deactivated, you can write a feature receiver for the same.

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{

//Remove the web part from web part gallery
SPSite site = null;
StringBuilder sb = new StringBuilder();
try
{
using (SPWeb web = properties.Feature.Parent as SPWeb)
{
SPList list = web.Lists["Web Part Gallery"];//site.GetCatalog(SPListTemplateType.WebPartCatalog);

for (int i = list.ItemCount - 1; i >= 0; i--)
{
// format name to look like a feature name
string webpartName = list.Items[i].Name;

webpartName = webpartName.Substring(0, webpartName.IndexOf("."));
// delete web parts that have been added
if ((webpartName == "WPChat") || (list.Items[i].DisplayName.Equals("WPChat")))
{
list.Items[i].Delete();
break;
}
}
}
}
catch (Exception ex)
{
using (StreamWriter w = new StreamWriter("C:\\log.txt"))
{
w.WriteLine(ex.ToString());
}
}
finally
{
if (site != null)
site.Dispose();
}
}

No comments:

Post a Comment