Sharepoint - 升级webpart属性

时间:2012-11-16 02:17:10

标签: c# .net sharepoint sharepoint-2010

我现在正在玩SharePoint 2010并遇到问题。 有一个功能负责webparts - 它的范围是web。需要更新已创建的webpart的一些属性,例如 - title。

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

顺便说一句,如果我在FeatureDeactivating事件中使用相同的代码 - 一切都很好。 我注意到的唯一区别是 - 在featureupgrading HttpContext.Current中是null。所以我手动填充它但它没有帮助。 谷歌搜索时,只有两个建议是:填充HttpContext并确保带有webpart的库在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");

非常感谢任何帮助。也许有一些我缺少的东西,或者有另一种变体可以完成描述的任务?

问候。

1 个答案:

答案 0 :(得分:0)

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

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