次の方法で共有


LINQ を使用して SharePoint 2010 データで Silverlight グラフを作成する

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

SharePoint 2010 での Web 開発の概要: LINQ を使用して Microsoft SharePoint 2010 リスト データを取得し、そのデータをグラフとして表示する Microsoft Silverlight アプリケーションを作成します。

最終更新日: 2011年1月27日

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

この記事の内容
Silverlight アプリケーション プロジェクトを作成する
リスト データにアクセスし、Silverlight グラフ コントロールに表示するコードを追加する
ソリューションを配置してテストする
次の手順

この演習では、Silverlight グラフ コントロールを使用して、SharePoint リスト データをグラフとして表示する Microsoft Silverlight 3 アプリケーションを作成します。このタスクを完了するには、以下の作業を実行します。

  • Silverlight アプリケーション プロジェクトを作成する

  • リスト データにアクセスし、Silverlight グラフ コントロールに表示するコードを追加する

  • ソリューションを配置してテストする

この演習では、読者が「SharePoint 2010 データにアクセスする Silverlight アプリケーションを作成する」を完了しているものと想定しています。このトピックでは、SharePoint リスト データを取得して Web サイト上の DataGrid コントロールに表示する Microsoft Silverlight 3 アプリケーションの作成方法について説明しています。

Silverlight アプリケーション プロジェクトを作成する

このタスクでは、Silverlight アプリケーション プロジェクトを Microsoft Visual Studio 2010 に作成します。

Silverlight プロジェクトを作成するには

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

  2. [インストールされているテンプレート] セクションで [その他のプロジェクトの種類] ノードに移動し、[Visual Studio ソリューション]、[空のソリューション] の順にクリックします。

  3. 画面の上部で、[.NET Framework 3.5] を選択し、[名前] ボックスに「Begin」と入力して、[OK] をクリックします。

  4. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  5. [インストールされているテンプレート] セクションで [Visual C#] ノードを展開し、[Silverlight]、[Silverlight アプリケーション] の順にクリックします。

  6. 画面の上部で [.NET Framework 3.5] を選択し、[名前] ボックスに「SilverlightEmployeeContributionsGraph」と入力して、[OK] をクリックします。

  7. [新しい Silverlight アプリケーション] ダイアログ画面で [OK] をクリックします。

  8. 次に、SharePoint Silverlight クライアント オブジェクト モデルへの参照を追加します。ソリューション エクスプローラーで [SilverlightEmployeeContributionsGraph] ノードを右クリックして、[参照の追加] をクリックします。

  9. 次のフォルダーに移動します。 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin

  10. [Microsoft.SharePoint.ClientSilverlight.dll] と [Microsoft.SharePoint.Client.Silverlight.Runtime.dll] を選択して、[OK] をクリックします。

  11. 次に、Silverlight チャート コントロール アセンブリへの参照を追加します。このアセンブリは [参照の追加] ダイアログ画面の [.NET] タブに System.Windows.Controls.DataVisualization.Toolkit という名前で表示されます。

    注意

    このアセンブリが [参照の追加] ダイアログ画面に表示されない場合は、Microsoft Silverlight Toolkit (英語) をインストールしてください。

リスト データにアクセスし、Silverlight グラフ コントロールに表示するコードを追加する

このタスクでは、LINQ と Silverlight チャート コントロールを使用して SharePoint リスト データにアクセスし、そのデータをグラフに表示できるようにするコードを追加します。

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

  1. ソリューション エクスプローラーで [App.xaml] ファイルを右クリックして、[コードの表示] をクリックします。以下の using ステートメントをファイルの先頭に追加します。

    using Microsoft.SharePoint.Client;
    using System.Threading;
    
  2. 以下のコードを Application_Startup メソッドの先頭に追加します。

    ApplicationContext.Init(e.InitParams, SynchronizationContext.Current);
    
  3. MainPage.xaml ファイルの XAML ビューで、以下の XML 名前空間を UserControl 要素に追加します。

    xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
    
  4. 以下の Silverlight チャート コントロールを grid 要素の内側に追加します。

    <chartingToolkit:Chart x:Name="chart" Width="350" Height="250" Title="Team Contributions">
        <chartingToolkit:Chart.Series>
            <chartingToolkit:ColumnSeries ItemsSource="{Binding}" 
                DependentValuePath="Contributions" 
                IndependentValuePath="Name"
                AnimationSequence="FirstToLast"   
                Title="Contributions" IsSelectionEnabled="True" />
        </chartingToolkit:Chart.Series>
    </chartingToolkit:Chart>
    
  5. MainPage.xaml.cs を開き、以下の using ステートメントをファイルの先頭に追加します。

    using Microsoft.SharePoint.Client;
    
  6. 以下のクラスを MainPage クラスの前に追加します。

    public class EmployeeContributions
    {
        public string Name { get; set; }
        public string TeamName { get; set; }
        public decimal Contributions { get; set; }
    }
    
    public class TeamContributions
    {
        public string Name { get; set; }
        public decimal Contributions { get; set; }
    }
    
  7. 以下の変数を MainPage クラスに追加します。

    private ListItemCollection _employees;
    
  8. initializeComponent の呼び出しの後に、以下のコードを MainPage メソッドに追加します。

    ClientContext context = new ClientContext(ApplicationContext.Current.Url);
    context.Load(context.Web);
    List employees = context.Web.Lists.GetByTitle("Employees");
    context.Load(employees);
    
    CamlQuery query = new CamlQuery();
    string camlQueryXml = null;
    
    query.ViewXml = camlQueryXml;
    _employees = employees.GetItems(query);
    context.Load(_employees);
    context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnRequestSucceeded), null);
    
  9. MainPage メソッドの後に以下のコードを追加します。

    private void OnRequestSucceeded(Object sender, ClientRequestSucceededEventArgs args)
    {
        // This is not called on the UI thread.
        Dispatcher.BeginInvoke(BindData);
    }
    
    private void BindData()
    {
        List<EmployeeContributions> employees = new List<EmployeeContributions>();
    
            // Get the list item values into a strongly-typed class.
            foreach (ListItem li in _employees)
            {
                employees.Add(new EmployeeContributions
                {
                    Name = li["Title"].ToString(),
                    TeamName = li["Team"].ToString(),
                    Contributions = Convert.ToDecimal(li["Contribution_x0020__x0028_in_x00"])
                });
            }
    
            // Use LINQ to organize employees by team name and then total team contributions.
             List<TeamContributions> teams = employees
                 .GroupBy(e => e.TeamName)
                 .Select(t => new TeamContributions
                 {
                     Name = t.Key,
                     Contributions = t.Sum(e => e.Contributions)
                 }).ToList();
             // This must be on a UI thread.
             chart.DataContext = teams; 
    }
    

    追加したコードの中では、SharePoint Silverlight クライアント オブジェクト モデルが SharePoint リストからデータを取得しています。従業員貢献度アイテムがリストに追加されると、LINQ によって従業員がチームにまとめられ、従業員貢献度が合計されます。その後、チーム貢献度がグラフのデータ ソースとして設定されます。

ソリューションを配置してテストする

このタスクでは、Silverlight Web パーツを Web サイト上のページに追加することにより、ソリューションを配置してテストします。

ソリューションをテストするには

  1. ソリューションを SharePoint に配置するには、Silverlight プロジェクトによって作成された .xap ファイルを C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin フォルダーに配置する必要があります。

    [SilverlightEmployeeContributionsGraph] ノードを右クリックし、[プロパティ] 、[ビルド] の順にクリックします。

  2. [出力パス] を C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin に変更します。

  3. [SilverlightEmployeeContributionsGraph] ノードを右クリックし、[ビルド] をクリックして、ソリューションをビルドします。.xap ファイルが目的のディレクトリにコピーされ、Silverlight Web パーツを SharePoint Web サイトに追加できるようになりました。

  4. Internet Explorer を開き、指定した Web サイトに移動します。

  5. 次に、「SharePoint 2010 データにアクセスする Silverlight アプリケーションを作成する」で追加した Silverlight Web パーツを更新して、このトピックで作成した Silverlight チャート コントロールを指すようにします。Silverlight Web パーツの右上隅にあるドロップダウン リストをクリックして、[Web パーツの編集] をクリックします。

  6. 画面右端の [構成] をクリックし、Silverlight Web パーツのダイアログ画面で「/_layouts/ClientBin/SilverlightEmployeeContributionsGraph.xap」と入力します。

  7. [OK] をクリックして、Silverlight Web パーツのサイドバー下部にある [OK] をクリックします。

    結果は図 1 のようになります。

    図 1. Silverlight グラフ Web パーツ

    Silverlight グラフ Web パーツ

次の手順