次の方法で共有


チュートリアル: SharePoint の OData を表示する Silverlight Web パーツを作成する

SharePoint 2010 では、リスト データの公開に OData が使用されています。 SharePoint での OData サービスは、RESTful サービス ListData.svc によって実装されています。 このチュートリアルでは、Silverlight アプリケーションをホストする SharePoint Web パーツを作成する方法について説明します。 Silverlight アプリケーションで SharePoint のお知らせリストの情報を表示するには、ListData.svc を使用します。 詳細については、「SharePoint Foundation REST インターフェイス」および Open Data Protocol に関するページを参照してください。

Note

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

  • サポート対象エディションの Microsoft Windows および SharePoint。

  • Visual Studio 2012。

Silverlight アプリケーションと Silverlight Web パーツを作成する

まず、Visual Studio で Silverlight アプリケーションを作成します。 Silverlight アプリケーションで ListData.svc サービスを使用して SharePoint のお知らせリストからデータを取得します。

Note

4.0 より前のバージョンの Silverlight では、SharePoint のリスト データを参照するために必要なインターフェイスがサポートされていません。

Silverlight アプリケーションと Silverlight Web パーツを作成するには

  1. メニュー バーで、[ファイル]>[新規作成]>[プロジェクト] を選択して、[新しいプロジェクト] ダイアログ ボックスを表示します。

  2. [Visual C#] または [Visual Basic][SharePoint] ノードを展開し、[2010] ノードを選択します。

  3. テンプレート ペインで、[SharePoint 2010 Silverlight Web パーツ] テンプレートを選択します。

  4. [名前] ボックスに「SLWebPartTest」と入力し、[OK] ボタンを選択します。

    [SharePoint カスタマイズ ウィザード] ダイアログ ボックスが表示されます。

  5. [デバッグのサイトとセキュリティ レベルの指定] ページで、サイト定義をデバッグする SharePoint サーバー サイトの URL を入力するか、既定の場所 (http://<システム名>/) を使用します。

  6. [この SharePoint ソリューションの信頼レベル] セクションで、[ファーム ソリューションとして配置する] オプション ボタンをクリックします。

    この例ではファーム ソリューションを使用しますが、Silverlight Web パーツ プロジェクトは、ファーム ソリューションまたはサンドボックス ソリューションとして配置できます。 サンドボックス ソリューションとファーム ソリューションの詳細については、「サンド ボックス ソリューションの考慮事項」を参照してください。

  7. [Silverlight 構成情報の指定] ページの [Silverlight Web パーツを関連付ける方法] セクションで、[新しい Silverlight プロジェクトを作成して Web パーツと関連付ける] オプション ボタンを選択します。

  8. [名前]SLApplication に変更し、[言語][Visual Basic] または [Visual C#] のいずれかに設定して、[Silverlight バージョン]Silverlight 4.0 に設定します。

  9. [完了] ボタンを選択します。 ソリューション エクスプローラーにプロジェクトが表示されます。

    ソリューションには、Silverlight アプリケーションと Silverlight Web パーツという 2 つのプロジェクトが含まれています。 Silverlight アプリケーションによって、SharePoint からリスト データが取得されて表示されます。Silverlight Web パーツによって、Silverlight アプリケーションがホストされ、SharePoint で表示できるようになります。

Silverlight アプリケーションをカスタマイズする

Silverlight アプリケーションにコードとデザイン要素を追加します。

Silverlight アプリケーションをカスタマイズするには

  1. Silverlight アプリケーションで System.Windows.Data へのアセンブリ参照を追加します。 詳しくは、「方法: [参照の追加] ダイアログ ボックスを使用して参照を追加または削除する」を参照してください。

  2. ソリューション エクスプローラーで、[参照] のショートカット メニューを開き、[サービス参照の追加] を選択します。

    Note

    Visual Basic を使用している場合は、ソリューション エクスプローラーの上部にある [すべてのファイルを表示] アイコンを選択して、[参照] ノードを表示する必要があります。

  3. [サービス参照の追加] ダイアログ ボックスの [アドレス] ボックスに SharePoint サイトの URL (http://MySPSite など) を入力して、[実行] ボタンを選択します。

    Silverlight によって SharePoint OData サービスの ListData.svc が検索され、アドレスがサービスの完全な URL に置き換えられます。 この例では、http://myserver が http://myserver/_vti_bin/ListData.svc. になります。

  4. [OK] を選択してサービス参照をプロジェクトに追加し、既定のサービス名 ServiceReference1 を使用します。

  5. メニュー バーで、 [ビルド]>[ソリューションのビルド] の順にクリックします。

  6. SharePoint サービスに基づいて新しいデータ ソースをプロジェクトに追加します。 そのためには、メニュー バーで [表示]>[その他のウィンドウ]>[データ ソース] を選択します。

    [データ ソース] ウィンドウには、タスク、お知らせ、カレンダーなど、SharePoint の利用可能なすべてのリスト データが表示されます。

  7. Silverlight アプリケーションにお知らせリスト データを追加します。 [データ ソース] ウィンドウから Silverlight デザイナーに "お知らせ" をドラッグできます。

    これにより、SharePoint サイトのお知らせリストにバインドされたグリッド コントロールが作成されます。

  8. Silverlight ページに合わせてグリッド コントロールのサイズを変更します。

  9. MainPage.xaml コード ファイル (Visual C# の場合は MainPage.xaml.cs、Visual Basic の場合は MainPage.xaml.vb) で、次の名前空間参照を追加します。

    // Add the following three using directives.
    using SLApplication.ServiceReference1;
    using System.Windows.Data;
    using System.Data.Services.Client;
    
  10. クラスの先頭に、次の変数宣言を追加します。

    private TeamSiteDataContext context;
    private CollectionViewSource myCollectionViewSource;
    DataServiceCollection<AnnouncementsItem> announcements = new DataServiceCollection<AnnouncementsItem>();
    
  11. UserControl_Loaded プロシージャを次のように置き換えます。

    private void UserControl_Loaded_1(object sender, RoutedEventArgs e)
    {
        // The URL for the OData service.
        // Replace <server name> in the next line with the name of your
        // SharePoint server.
        context = new TeamSiteDataContext(new Uri("http://ServerName>/_vti_bin/ListData.svc"));
    
        // Do not load your data at design time.
        if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
        {
            //Load your data here and assign the results to the CollectionViewSource.
            myCollectionViewSource = (System.Windows.Data.CollectionViewSource)this.Resources["announcementsViewSource"];
            announcements.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(announcements_LoadCompleted);
            announcements.LoadAsync(context.Announcements);
        }
    }
    

    ServerName プレースホルダーは、SharePoint が実行されているサーバーの名前に必ず置き換えてください。

  12. 次のエラー処理プロシージャを追加します。

    void announcements_LoadCompleted(object sender, LoadCompletedEventArgs e)
    {
        // Handle any errors.
        if (e.Error == null)
        {
            myCollectionViewSource.Source = announcements;
        }
        else
        {
            MessageBox.Show(string.Format("ERROR: {0}", e.Error.Message));
        }
    }
    

Silverlight Web パーツを変更する

Silverlight Web パーツ プロジェクトのプロパティを変更して、Silverlight のデバッグを有効にします。

Silverlight Web パーツを変更するには

  1. Silverlight Web パーツ プロジェクト (SLWebPartTest) のショートカット メニューを開き、[プロパティ] を選択します。

  2. [プロパティ] ウィンドウで、[SharePoint] タブを選択します。

  3. まだ選択されていない場合は、[Script デバッグの代わりに Silverlight デバッグを有効にする] チェック ボックスをオンにします。

  4. プロジェクトを保存します。

Silverlight Web パーツをテストする

SharePoint で新しい Silverlight Web パーツをテストして、SharePoint のリスト データが正しく表示されることを確認します。

Silverlight Web パーツをテストするには

  1. F5 キーを押し、SharePoint ソリューションをビルドして実行します。

  2. SharePoint の [サイトの操作] メニューで、[新しいページ] を選択します。

  3. [新しいページ] ダイアログで、「SL Web パーツ テスト」といったタイトルを入力し、[作成] ボタンを選択します。

  4. ページ デザイナーの [編集ツール] タブで、[挿入] を選択します。

  5. タブ ストリップで、[Web パーツ] を選択します。

  6. [カテゴリ] ボックスで、[カスタム] フォルダーを選択します。

  7. [Web パーツ] の一覧で Silverlight Web パーツを選択し、[追加] ボタンを選択して、Web パーツをデザイナーに追加します。

  8. Web ページに必要なものをすべて追加した後、[ページ] タブを選択して、ツール バーの [保存して閉じる] ボタンを選択します。

    Silverlight Web パーツに、SharePoint サイトからのお知らせデータが表示されるようになるはずです。 既定では、ページは SharePoint のサイト ページ リストに格納されます。

    Note

    異なるドメインから Silverlight のデータにアクセスすると、Web アプリケーションの悪用に使用できるセキュリティの脆弱性が Silverlight によって防がれます。 Silverlight でリモート データにアクセスするときに問題が発生する場合は、「ドメインの境界を越えてサービスを利用できるようにする」を参照してください。