【问题标题】:Sharepoint - upgrade webpart propertiesSharepoint - 升级 Web 部件属性
【发布时间】:2012-11-04 18:08:41
【问题描述】:

我现在正在使用 SharePoint 2010,但遇到了问题。 有一个功能负责 webparts - 它的范围是 web。需要更新已创建的 Web 部件的某些属性,例如 - 标题。

所以我已经覆盖了 FeatureUpgrading 事件并将自定义升级操作添加到功能清单中 - 这里没有问题。 在该功能接收器中,我计划编写一个代码,该代码应该获取带有所需页面的文件,检查它,遍历其上的所有 Web 部件,更改属性,然后返回页面。 问题是我所有的 webpart 都显示为 ErrorWebPart,标题为空。

顺便说一句,如果我在 FeatureDeactivating 事件中使用相同的代码 - 一切正常。 我注意到的唯一区别 - 在功能升级 HttpContext.Current 中为空。所以我手动填充了它,但它没有帮助。 谷歌搜索时,仅有的两个建议是:填充 HttpContext 并确保带有 webparts 的库在 GAC 中。在我的情况下,这两个条件都完成了。

来自 FeatureUpgrading 的示例代码是正确的:

 SPUtility.ValidateFormDigest();
        web.AllowUnsafeUpdates = true;

        var request = new HttpRequest("", web.Url, "");
        HttpContext.Current = new HttpContext(request, new HttpResponse(new StringWriter()));
        HttpContext.Current.Items["HttpHandlerSPWeb"] = web;

        var fileUrl = web.Url + "/pages/sample.aspx";
        var file = web.GetFile(fileUrl);
        if (file.CheckOutType == SPFile.SPCheckOutType.None)
        {
            file.CheckOut();
        }

        using (var webPartsManager = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
        {
            foreach (WebPart webPart in webPartsManager.WebParts)
            {
                Console.WriteLine(webPart.GetType().ToString());
            }
        }

        file.CheckIn("System update");

不胜感激。也许我缺少某些东西,或者有其他变体可以完成所描述的任务?

问候。

【问题讨论】:

  • 如果您尝试从 Visual Studio 中收回项目,重新构建并重新部署,会发生什么情况?
  • 之前我在同一台机器上尝试过全新安装,升级的结果是一样的。

标签: c# .net sharepoint sharepoint-2010


【解决方案1】:

由于它正在处理 Deactivating(),我认为激活功能的顺序是问题所在。
您可能必须确保以下内容:
1.首先激活添加webpart的Feature
2.然后激活新功能。

您可以在包中更改它。或者更好地为您的新功能添加依赖项。

【讨论】:

  • 升级过程中 - 没有激活/停用。 Webparts 已经存在。第二个功能负责在 FeatureUpgrading 处理程序中升级这些现有的 Web 部件。 Webpart 的数量是正确的,但它们确实显示为 ErrorWebPart。
猜你喜欢
  • 1970-01-01
  • 2011-02-08
  • 2014-11-08
  • 2021-06-15
  • 2011-06-13
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
相关资源
最近更新 更多