【发布时间】:2012-05-29 15:32:59
【问题描述】:
我可以使用SPWebPartManager 以编程方式隐藏每个用户的 Web 部件吗?
如:获取SPWebPartManager实例,遍历Web Parts,根据用户设置visible = false。
我从某处听说,当您设置 webpart.visible = false 这为所有用户设置此设置时,这是真的吗?
【问题讨论】:
标签: sharepoint-2010
我可以使用SPWebPartManager 以编程方式隐藏每个用户的 Web 部件吗?
如:获取SPWebPartManager实例,遍历Web Parts,根据用户设置visible = false。
我从某处听说,当您设置 webpart.visible = false 这为所有用户设置此设置时,这是真的吗?
【问题讨论】:
标签: sharepoint-2010
您需要在用户范围内打开 Web 部件才能更新用户特定的属性。使用PersonalizationScope Enumeration 相应地打开SPLimitedWebPartManager:
SPWeb web = // ...
using (SPLimitedWebPartManager mgr = web.GetLimitedWebPartManager(
"<path to page>",
PersonalizationScope.User))
{
WebPart wp = mgr.WebParts[<ID of the web part to update>];
wp.Hidden = true; // hide the web part.
mgr.SaveChanges(wp);
}
注意:为了更新PersonalizationScope.User 中的属性,需要将属性标记为个人Web 部件存储([WebPartStorage(Storage = Storage.Personal)]):
User PersonalizationScope 范围的 MSDN 描述:
当提到 WebPartManager 控件上的范围时,用户范围意味着为页面上的所有可个性化控件加载特定于用户的个性化数据以及适用于所有用户的个性化数据。只有用户特定的个性化数据才能保存在页面上。 当引用与 Web 部件控件属性关联的范围时,用户范围表示该属性只能在共享范围内的页面上运行时加载和存储适用于所有用户的数据。但是,当属性的控件在用户范围内的页面上运行时,将加载并合并属性的每个用户和所有用户的数据。但是,在这种情况下,当页面在用户范围内运行时,只会保存每个用户的数据。
【讨论】: