我可以使用SPWebPartManager
以编程方式隐藏每个用户的Web部件吗?
例如:获取SPWebPartManager
实例,遍历Web部件,并根据用户设置visible = false
。
当我设置webpart.visible = false
时,我从某个地方听到这为所有用户设置了这个,这是真的吗?
答案 0 :(得分:0)
您需要在用户范围中打开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
中的peropery,需要将该属性标记为个人Web部件存储([WebPartStorage(Storage = Storage.Personal)]
):
User PersonalizationScope范围的MSDN说明:
当引用WebPartManagercontrol上的范围时,用户范围意味着为页面上的所有可个性化控件加载特定于用户的个性化数据以及适用于所有用户的个性化数据。只有用户特定的个性化数据才能保存在页面上。 在引用与Web部件控件属性关联的作用域时,用户作用域指示该属性只能在共享作用域中的页面上运行时加载和存储适用于所有用户的数据。但是,当属性的控件在用户范围中的页面上运行时,将加载和合并属性的每用户和所有用户数据。但是,在这种情况下,只有在用户范围内运行页面时才会保存每用户数据。