1

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

4

1 回答 1

0

您需要在用户范围内打开 Web 部件才能更新用户特定的属性。使用PersonalizationScope 枚举相应地打开 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)]):

用户 PersonalizationScope 范围的 MSDN 描述:

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

于 2012-05-29T07:32:59.087 回答