2012-01-02 32 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 ...

希望它可以幫助