LINQ を使用して SharePoint 2010 Web パーツでデータにアクセスする

SharePoint クイックスタート バナー

SharePoint 2010 でのデータ アクセスの概要: LINQ を使用してリストからデータを取得する SharePoint 2010 Web パーツの作成方法について解説します。

最終更新日: 2012年6月13日

適用対象: Office 2010 | SharePoint Foundation 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio 2010

この記事の内容
視覚的 Web パーツ プロジェクトを作成する
LINQ to SharePoint プロキシ コードを成する
データを SharePoint リストから読み出すコードを追加する
Web パーツを配置して Web パーツ ページに追加する
次の手順

この演習では、LINQ クエリを使用して 2 つのリストからデータを読み出し、DataGrid コントロール内に表示する視覚的 Web パーツを作成して配置します。このタスクを完了するには、以下の作業を実行します。

  • 視覚的 Web パーツ プロジェクトを作成する

  • LINQ to SharePoint プロキシ コードを成する

  • データを SharePoint リストから読み出すコードを追加する

  • Web パーツを配置して Web パーツ ページに追加する

視覚的 Web パーツ プロジェクトを作成する

このタスクでは、視覚的 Web パーツ プロジェクトを Microsoft Visual Studio 2010 に作成します。

注意

以降のタスクは、既定の SharePoint Web サイトに Employees と Projects というタイトルのリストがあるものと想定しています。これら 2 つのリストの作成方法については、「リンクされているリストを SharePoint 2010 に作成する」を参照してください。

視覚的 Web パーツを作成するには

  1. Visual Studio 2010 を起動して、[ファイル] をクリックし、[新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [インストールされているテンプレート] セクションの [Visual C#] ノードに移動して、[SharePoint]、[2010] の順にクリックします。

  3. [視覚的 Web パーツ] プロジェクト テンプレートを選択し、プロジェクトの名前 (AccessSPDatawithLINQ など) と場所を入力して、[OK] をクリックします。

  4. [デバッグに使用するローカル サイトを指定してください] ドロップダウン リストで、使用するサイト (http://localhost/sites/MySampleWebSite など) を選択します。[ファーム ソリューションとして配置する] オプションも選択して、[完了] をクリックします。

    プロジェクトを作成すると、ソリューション エクスプローラーに VisualWebPart1 という名前の視覚的 Web パーツが表示されることに注目してください (図 1 を参照)。

    図 1. ソリューション エクスプローラーで表示した AccessSPDatawithLINQ プロジェクト

    ソリューション エクスプローラーで表示した AccessSPDatawithLINQ プロジェクト

LINQ to SharePoint プロキシ コードを成する

このタスクでは、spmetal.exe コード生成ユーティリティを使用して、LINQ to SharePoint プロキシ コードを生成します。このツールは、IntelliSense を取得し、LINQ ベースのクエリを SharePoint Server 2010 リストに対して実行できるようにするためのインターフェイスとして Visual Studio 2010 が使用するエンティティ クラス コードを生成します。

LINQ プロキシ コードを生成するには

  1. ソリューション エクスプローラーで [AccessSPDatawithLINQ] を右クリックして、[Windows エクスプローラーでフォルダーを開く] をクリックします。

  2. SHIFT キーを押しながらエクスプローラー ウィンドウを右クリックし、[コマンド ウィンドウをここで開く] をクリックして、現在のプロジェクト ディレクトリでコマンド ウィンドウを開きます。

  3. コマンド ウィンドウで以下のコマンドを入力し、ENTER キーを押して、SharePoint Server 2010 フォルダーのパスを設定します。

    set path=%path%;c:\program files\common files\microsoft shared\web server extensions\14\bin

  4. コマンド ウィンドウで以下のコマンドを入力し、ENTER キーを押して、LINQ to SharePoint プロキシ コードを生成します。SharePoint サイトの URL はユーザーのサイトの URL で置き換えます。

    spmetal.exe /web:http://localhost/sites/MySampleWebSite /namespace:AccessSPDatawithLINQ.VisualWebPart1 /code:SPLinq.cs

    このコマンドによって、AccessSPDatawithLINQ プロジェクト フォルダーに SPLinq.cs ファイルが作成されます。

  5. コマンド ウィンドウを閉じます。

  6. 今度はファイルをプロジェクトに追加します。Visual Studio プロジェクト画面に戻ります。

  7. ソリューション エクスプローラーで [AccessSPDatawithLINQ] を右クリックし、[追加] をポイントして、[ 既存の項目] をクリックします。

  8. [既存の項目の追加] ダイアログ ウィンドウで [SPLinq.cs] を選択し、[追加] をクリックします。

  9. ソリューション エクスプローラーで [参照] を右クリックし、[参照の追加] をクリックします。

  10. [参照] タブをクリックして、[ファイル名] ボックスに「C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI」と入力します。

  11. [Microsoft.SharePoint.Linq.dll] を選択し、[OK] をクリックします。

データを SharePoint リストから読み出すコードを追加する

このタスクでは、視覚的 Web パーツが SharePoint Server 2010 リストからデータを取得できるようにするコードをソリューションに追加します。

コードをプロジェクトに追加するには

  1. ソリューション エクスプローラーで [VisualWebPart1] を展開して、[VisualWebPart1UserControl.ascx] をダブルクリックします。Visual Studio によって、視覚的 Web パーツ ユーザー コントロール用 HTML が表示されます。

  2. 以下のコードを既存のコードの下に追加して、グリッド ビューを作成します。

    <%@ Import Namespace="Microsoft.SharePoint.WebControls" %> 
    <SharePoint:SPGridView id="spGridView" runat="server" AutoGenerateColumns="false"> 
      <HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" /> 
      <Columns> 
        <SharePoint:SPBoundField  DataField="Title" HeaderText="Title"></SharePoint:SPBoundField> 
        <SharePoint:SPBoundField DataField="JobTitle" HeaderText="JobTitle"></SharePoint:SPBoundField> 
        <SharePoint:SPBoundField DataField="ProjectTitle" HeaderText="ProjectTitle"></SharePoint:SPBoundField> 
        <SharePoint:SPBoundField DataField="DueDate" HeaderText="DueDate"></SharePoint:SPBoundField> 
      </Columns> 
    </SharePoint:SPGridView>
    

    コードを追加すると、視覚的 Web パーツ ユーザー コントロール用 HTML は図 2 のようになります。

    図 2. 視覚的 Web パーツ ユーザー コントロールの完全なコード

    ビジュアル Web パーツ ユーザー コントロール内のコード

  3. ソリューション エクスプローラーで [VisualWebPart1UserControl.ascx] を右クリックして、[コードの表示] をクリックします。

  4. コード画面の先頭で、以下のステートメントをコードに追加します。

    using Microsoft.SharePoint.Linq; 
    using Microsoft.SharePoint; 
    using System.Linq;
    
  5. 以下のコードを Page_Load メソッドの内側に挿入します。

    SPLinqDataContext dc = new SPLinqDataContext(SPContext.Current.Web.Url);  
    EntityList<EmployeesItem> Employees = dc.GetList<EmployeesItem>("Employees");  
    var empQuery = from emp in Employees 
                   where emp.Project.DueDate < DateTime.Now.AddMonths(6) 
                   select new 
                   { 
                       emp.Title, 
                       emp.JobTitle, 
                       ProjectTitle = emp.Project.Title, 
                       DueDate = emp.Project.DueDate.Value.ToShortDateString() 
                   };  
    spGridView.DataSource = empQuery; 
    spGridView.DataBind();
    

Web パーツを配置して Web パーツ ページに追加する

このタスクでは、Web パーツを配置して SharePoint Server 2010 Web サイト上のホーム ページに追加します。

視覚的 Web パーツを展開してテストするには

  1. ソリューション エクスプローラーで [AccessSPDatawithLINQ] を右クリックして、[配置] をクリックします。これにより、視覚的 Web パーツが作成され、前に指定した SharePoint サイトに配置されます。

  2. Internet Explorer を起動して SharePoint サイトに移動します。

  3. ホーム ページ上部の [編集] アイコンをクリックして、ページの編集を開始します。

  4. リボンの [編集ツール] タブで、[挿入]、[Web パーツ] の順にクリックします。

  5. 図 3 に示すように、[カテゴリ] セクションで [カスタム] をクリックし、[Web パーツ] セクションで [SPLinqDemoTitle] をクリックし、[追加] をクリックします。

    図 3. SPlinqDemoTitle Web パーツを選択する

    SPlinqDemoTitle Web パーツを選択する

    これにより、図 4 に示すように、SPLinqDemoTitle Web パーツがホーム ページに追加されます。

    図 4. ホーム ページに追加された SPLinqDemoTitle Web パーツ

    ホーム ページに追加された SPLinqDemoTitle Web パーツ

  6. リボンの [編集の終了] をクリックし、ページを保存して編集を終了します。

  7. Internet Explorer を閉じます。

次の手順