2012-01-02 60 views
0

我正在开发一个Web部件,我无法在SharePoint服务器上更新,而无需在Web部件库中将其删除。然后,我在电源外壳运行:更新Web部件时出错

  • 更新-SPSolution ...
  • 禁用-SPFeature ...
  • 启用-SPFeature ...

我尝试删除网站在事件接收器编程库的一部分,但它会导致的SharePoint失败:

public override void FeatureDeactivating(SPFeatureReceiverProperties properties) 
     { 
      SPSite site = properties.Feature.Parent as SPSite; 

      using (SPWeb web = site.RootWeb) 
      { 
       SPList list = web.Lists["Web Part Gallery"]; 

       // go through the items in reverse 
       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 (properties.Feature.Definition.DisplayName == webpartName) 
        { 
         list.Items[i].Delete(); 

         break; 
        } 
       } 
      } 
     } 

任何想法,我做错了什么? thx

回答

0

我回来分享解决方案。 下面是正确的代码停用该功能时,从图库delele网络的一部分:

public override void FeatureDeactivating(SPFeatureReceiverProperties properties) 
    { 
     try 
     { 
      int ItemID = -1; 
      using (SPSite oSite = (SPSite)(properties.Feature.Parent)) 
      { 
       using (SPWeb oWeb = oSite.RootWeb) 
       { 
        SPList oList = oWeb.Lists["Galerie de composants WebPart"]; 

        if (oList == null) 
        { 
         // si SharePoint en anglais 
         oList = oWeb.Lists["Web Part Gallery"]; 
        } 
        // si oList == null, alors aucun de traitement 
        // on ne connais pas le nom de la liste 
        // de la gallerie de web part 
        if (oList != null) 
        { 
         for (int i = 0; i < oList.ItemCount; i++) 
         { 
          if (oList.Items[i].Title.Equals(WebPartTitle)) 
          { 
           ItemID = oList.Items[i].ID; 
           break; 
          } 
         } 
         if (ItemID != -1) 
         { 
          SPListItem oItem = oList.GetItemById(ItemID); 
          oItem.Delete(); 
          oList.Update(); 
         } 
        } 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      //will throw to and error page 
      throw new Exception(String.Format("The has been an error " 
      + "removing the WebPart from the Gallery; {0}", e.ToString())); 
     } 
    } 

最后,在事件接收器添加此代码后,用于更新Web部件解决方案的程序是:

  • 禁用-SPFeature ...

  • 卸载-SPFeature ...

  • 更新-SPSolution ...

  • 安装-SPFeature ...

  • 启用-SPFeature ...

希望它可以帮助