1

SPWebPartManagerプログラムでユーザーごとにWebパーツを非表示にするために使用できますか?例:SPWebPartManagerインスタンスを取得し、Webパーツを反復処理し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);
}

注:プロパティ内の peropery を更新するには、個人用 Web パーツ ストレージ ( )PersonalizationScope.Userとしてマークする必要があります。[WebPartStorage(Storage = Storage.Personal)]

User PersonalizationScope スコープの MSDN の説明:

WebPartManager コントロールのスコープを参照する場合、ユーザー スコープは、ユーザー固有のパーソナル化データと、すべてのユーザーに適用されるパーソナル化データが、ページ上のすべてのパーソナル化可能なコントロールに読み込まれることを意味します。ページに保存できるのは、ユーザー固有のパーソナライズ データのみです。Web パーツ コントロール プロパティに関連付けられたスコープを参照する場合、ユーザー スコープは、そのプロパティが、共有スコープ内のページで実行されている場合に、すべてのユーザーに適用可能なデータのみを読み込んで格納できることを示します。ただし、プロパティのコントロールがユーザー スコープ内のページで実行されている場合、プロパティのユーザーごとおよびすべてのユーザーのデータが読み込まれ、マージされます。ただし、この場合、ページが User スコープで実行されている場合、ユーザーごとのデータのみが保存されます。

于 2012-05-29T07:32:59.087 に答える