SPWebPartManager
プログラムでユーザーごとにWebパーツを非表示にするために使用できますか?例:SPWebPartManager
インスタンスを取得し、Webパーツを反復処理しvisible = false
、ユーザーに応じて設定します。これを設定すると、どこかwebpart.visible = false
ですべてのユーザーにこれが設定されると聞きましたが、これは本当ですか?
1 に答える
ユーザー固有のプロパティを更新するには、ユーザー スコープで 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 スコープで実行されている場合、ユーザーごとのデータのみが保存されます。