Sharepoint 2010 SPWebPartManager用于隐藏每个用户的Web部件

Sharepoint 2010 SPWebPartManager用于隐藏每个用户的Web部件,sharepoint-2010,Sharepoint 2010,我可以使用SPWebPartManager以编程方式隐藏每个用户的Web部件吗? 例如:获取SPWebPartManager实例,遍历Web部件,并根据用户设置visible=false。 当您设置webpart.visible=false时,我从某个地方听说这为所有用户设置了此选项,这是真的吗?您需要在用户范围内打开Web部件以更新用户特定的属性。使用相应的打开SPLimitedWebPartManager: SPWeb web = // ... using (SPLimitedWebPart

我可以使用SPWebPartManager以编程方式隐藏每个用户的Web部件吗? 例如:获取SPWebPartManager实例,遍历Web部件,并根据用户设置visible=false。
当您设置webpart.visible=false时,我从某个地方听说这为所有用户设置了此选项,这是真的吗?

您需要在用户范围内打开Web部件以更新用户特定的属性。使用相应的打开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,需要将属性标记为personal web部件存储[WebPartStorageStorage=storage.personal]:

用户PersonalizationScope范围的MSDN说明:

当参考WebPartManagercontrol上的作用域时,用户作用域表示为页面上的所有可个性化控件加载特定于用户的个性化数据以及适用于所有用户的个性化数据。页面上只能保存特定于用户的个性化数据。 当引用与Web部件控件属性关联的作用域时,用户作用域表示当在共享作用域中的页面上运行时,该属性只能加载和存储适用于所有用户的数据。但是,当属性的控件在用户范围内的页面上运行时,将加载并合并属性的每个用户和所有用户数据。不过,在这种情况下,当页面在用户范围内运行时,只保存每个用户的数据