后台代码修改Webpart属性无法保存

背景:一个继承System.Web.UI.WebControls.WebParts的Webpart需要根据requert传进来的参数修改webpat标题,CreateChildControls中代码如下

   1: if (string.IsNullOrEmpty(this.Page.Request["rebuildurl"]))
   2: {
   3:     Title = this.Page.Request["rebuildurl"].Trim();
   4:     //base.SetPersonalizationDirty();
   5:     //Description = "点击查看更多信息";
   6: }

结果发现URl去掉参数后,Webpart标题又恢复到原来状态,this.Title的值并没有保存下,查了一个上午终于找到一篇文章提到这问题

When does custom properties of a web part get saved?

里面提到需要使用base.SetPersonalizationDirty();指示个性化数据已经修改,茅塞顿开!

   1: if (string.IsNullOrEmpty(this.Page.Request["rebuildurl"]))
   2: {
   3:     Title = this.Page.Request["rebuildurl"].Trim();
   4:     base.SetPersonalizationDirty();
   5:     //Description = "点击查看更多信息";
   6: }

备注:上面的方法在继承System.Web.UI.WebControls.WebParts的webpart上有效,

继承自Microsoft.SharePoint.WebPartPages.WebPart的webpart有一个SaveProperties属性,应该能实现同样的功能,可参考

Programmatically set webpart title in web part code

posted @ 2012-05-06 13:41  ruijian  阅读(381)  评论(0编辑  收藏  举报