2012-01-04 6 views
0

以下のコードでは、すべてのサイトのリストをWebアプリケーションに表示しています。私はいくつかのサイト、例えば100のうちの5つを表示したいと思います。リストの下に、すべてのサイトを閲覧できるページにリダイレクトするリンクを表示したいと思います。共有ポイントに限定数のアイテムを表示

これを達成する最も良い方法は何ですか?誰か私にいくつかのコードを提供できますか?

ありがとうございました。これを行うには

public static WorkspacesList GetAll() 
    { 
     WorkspacesList allWorkspaces = new WorkspacesList(); 

     using (SPSite site = new SPSite("http://sng3sp6d:8888/")) 
     { 

      SPWebApplication webApplication = site.WebApplication; 

      foreach (SPSite siteCollection in webApplication.Sites) 
      { 
       try 
       { 
        SPWeb website = siteCollection.RootWeb; 

        if (website.DoesUserHavePermissions(SPBasePermissions.ViewListItems)) 
        { 
         allWorkspaces.Add(new Workspace(website.Title, website.Url, website.Created)); 
        } 

       } 
       finally 
       { 
        if (siteCollection != null) 
         siteCollection.Dispose(); 
       } 
      } 
     } 

     allWorkspaces.Reverse(); 
     return allWorkspaces; 
    } 

答えて

0

最も簡単な方法は、リストと、ユーザーがアクセス権を持つサイトコレクションを表示するために使用し、標準のWebパーツでサイトコレクションのリストを置くことであろう。次に、一度に表示するアイテムの数を制限することができます。

テーブルを5行で動的に作成し、そのテーブルに最初の5つのサイトコレクションを作成することもできます。 「View All」というボタンを追加すると、次のページに移動します。

結果を保持する共有リストを作成します。すべての結果をリストに書き込んだ後、Webパーツページに追加します。このページを "/sites/mysite/siteassets/viewsites.aspx"と呼ぶことにしましょう。

「すべて表示」ボタンをクリックすると、ユーザーは新しいページに移動します。ユーザーIDをクエリ文字列として追加し、 "viewsites"ページをユーザーIDでフィルタすることができます。

0

はその後、uは、表示したい項目数の設定可​​能なプロパティを持つことができ、あなたはWPでこの情報を表示している - すなわちのForEachの5

Inspite、あなたがのために使用し、5行にそれを制限することができます。 ヘッダーをクリックすると、すべてのアイテムを表示するように同じWPが設定されている別のページにリダイレクトできます。

Sandeep

+0

SPSiteDataQueryRowLimitプロパティ:

は見てみましょう。しかしforループを使ってサイトをどのようにループすることができますか?例をお待ちしております。 –

+0

このスレッドに貢献していただきありがとうございますが、私はすべてのアイテムを保持するために汎用リストを使用しています。要件は、最後の5つだけを表示し、最新のものを上に表示することです。どのようにこれを行うにはどのようなアイデア? –

0

パフォーマンス上の問題については、 SPSiteDataQueryを使用することをお勧めします。クエリ内で取得する項目を制限できます。はい、私は、Webパーツを使用しています