SPLimitedWebpartManager在SaveChanges上重置自定义Web部件属性

时间:2016-06-20 16:24:46

标签: sharepoint sharepoint-2010 sharepoint-2013

我们正在以2010模式运行SharePoint 2013发布网站。安装SharePoint 2013 CTP更新后,以前在2010年正常工作的代码部分无效(配置数据库版本: 15.0.4815.1000)。

我正在尝试添加自定义属性的自定义webpart。下面的代码将webpart添加到正确的区域,但是当SPLimitedWebPartManager.SaveChanges(webpart)执行时,它会将自定义属性值重置为默认值。

var wpManager = web.GetLimitedWebPartManager(page.ListItem.Url, System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)
var dsWebPart = new DocumentSetBridge()
        {
            Title = "Shared Resource(s)",
            ChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.None,
            KnowledgeCenterAssetsLibraryItemId = documentSetUniqueGuid,
            ID = KnowledgeCenterSettings.DocumentSetBridgeWebPartId,
            ShowManageDocLink = true,
            IsUserCommunityDS = true
        };
wpManager.AddWebPart(dsWebPart, UserGroupSettings.DOCUMENTSET_WEBPART_ZONE_ID, UserGroupSettings.DOCUMENTSET_WEBPART_ZONE_INDEX);

非常感谢任何帮助。提前谢谢。

Senthil S

更新:发现权限问题。它创建一个带有预定义webpart的新页面,并为页面分配用户管理权限。尽管如此,页面更新了适当的权限,似乎SP直到某个时候才识别它。可能是因为某些时间问题。如果我添加作为管理员模仿的Web部件,一切看起来都很好。

1 个答案:

答案 0 :(得分:0)

将WebPart添加到SPLimitedWebPartManager后,您应该执行以下操作

wpManager.SaveChanges(dsWebPart);
web.Update();

和/或使用SetPersonalizationDirty()之类的

dsWebPart.SetPersonalizationDirty();