【问题标题】:Error when Updating a web part更新 Web 部件时出错
【发布时间】:2012-01-25 22:42:22
【问题描述】:

我正在开发一个无法在 SharePoint 服务器上更新的 Web 部件,除非在 Web 部件库中将其删除。然后,我在 power shell 中运行:

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

我尝试在事件接收器中以编程方式删除库中的 Web 部件,但这会导致 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;
                    }
                }
            }
        }

知道我做错了什么吗?谢谢

【问题讨论】:

    标签: sharepoint-2010 web-parts


    【解决方案1】:

    我回来分享解决方案。 以下是停用该功能时从库中删除 Web 部件的正确代码:

    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 ...

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-14
      • 2012-04-19
      • 1970-01-01
      • 2011-06-06
      • 2018-11-09
      • 1970-01-01
      • 2021-08-01
      相关资源
      最近更新 更多