質問

すべてのWebPartsをページにロードしてから、ユーザーグループ/アクセス許可レベルに関連するすべてのWebPartsをロードする必要があるのは、実際のドラッグアンドパフォーマンスキラーです。特にホームページ(ユーザーに重要なものを表示するのに最適な場所であること...) - それはサイト/ファームを握り、大きなデバッグオーバーヘッドを引き起こします。確かに、関連するWebPartsのみでユーザーをターゲットにするためのより良い方法があり、無関係なWebPartsをロードして隠す必要がありませんか?

だから旧を使う代わりに:

Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager mgr = null;
mgr = oWebUserTokened.GetLimitedWebPartManager(url, system.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
// first hide them all to avoid exposure…
foreach (System.Web.UI.WebControls.WebParts.WebPart thisWebPart1 in mgr.WebParts)
{
  thisWebPart1.Hidden = true;
  mgr.SaveChanges(thisWebPart1);
}
    // and then reveal the required ones….
    foreach (System.Web.UI.WebControls.WebParts.WebPart thisWebPart2 in mgr.WebParts)
    {
      if (boolThisTypeOfUser) // needs particular webparts
      {
        if (thisWebPart2.Title == "Special Webpart Title")
        SetWebPartVisibility(mgr, thisWebPart2); // Show the WebPart etc
      }
      else // check for other user types…
    }
.

...そしてユーザに適したものを明らかにする、無関係なウェブパートをまったく積み重ねることを避けるための迂回方法はありますか?

私はあなたが「オーディエンスを使う!」を叫ぶことができることを感謝しますしかし、a)財団上にあり、B)彼らがすべてを積み重ねるかどうか、ならびにhide hide、すなわち同じオーバーヘッドを隠すかどうか。

CreateChildControls()にいるように見て、とにかく無関係なWebPartsの読み込みを避けるだけでは単に簡単だと思っていましたが、それだけではありません。

役に立ちましたか?

解決

私はあなたがすべてのWebPartsの中で上記のコードを持っているでしょう!

if (boolThisTypeOfUser) // needs particular webparts
{
   //createchildcontrols as normal
}
.

私はどこへ行くのかわかりますか?このようにして、CreateChildControls内のコードを実行してWebPartを表示することを知っています。そうでなければ何もしないでください!

あなたはまたあなたが隠しているために1回、WebPart Manager内の各WebPartを2回除去し、2回目の表示のために!このようにしてコードが実行されないように表示されるものは何も表示される必要はありません。)

繰り返しコードを最小限に抑えるために、あなたがしたときにあなたのためにワークアウトを行う別のクラスプロジェクトを作成し、上記のようにブールを返すことができます。プロジェクトを作成し、それを各WebPartプロジェクト参照に追加し、WebPartをロードする必要があるかどうかを確認するときはいつでもそれを呼び出します:)

クリーン、素敵で速い;)

他のヒント

SharePoint Foundationに限られている場合、それはどのようにしても大文字の大きな頭痛になるでしょう。SharePoint Foundationを使用してボックスのユーザー/オーディエンスコントロールのうちどちらも上位を持ちません。

  1. WebPartsを挿入するときは、ページに負荷が大きくないようにするには、ページに挿入した直後に隠してください。そのように彼らはすでに隠されており、あなたがどのようなコードをコードするかによって言われるまでロードされません。
  2. WebPartのタイトルにプレフィックスを使用すると、コードが表示されるコードを簡単に表示します。
  3. コードまたは外部ファイルを使用する必要があります。現在のページに特定のWebPartsが表示されることを許可されている現在のページに指示する必要があります。

    実際に行わなければならないのは、SharePoint Serverですでにデフォルトのものを再発明することです。
    価格帯の範囲内にある場合は、SharePoint Serverを購入することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top