Infragistics XamDataGrid を使用してOutlook のダイナミックグリッドを作成

杉本和也
杉本和也
リードエンジニア
CData ADO.NET Provider とInfragistics XamDataGrid を使用してダイナミックグリッドを構築。



Infragistics WPF UI コントロールを使用すると、デスクトップおよびタッチデバイス用の、最新のMicrosoft Office に着想を得たアプリを構築できます。CData ADO.NET Provider for API と組み合わせると、ライブのOutlook にアクセスして動的なグリッド、グラフその他のビジュアライゼーションを構築できます。この記事では、Infragistics XamDataGrid コントロールを使用してVisual Studio でダイナミックグリッドを作成する方法について説明します。

続行するには、Infragistics WPF UI コンポーネントをインストールしてください。こちらから無償トライアルをダウンロードできます。:https://www.infragistics.com/products/wpf

WPF プロジェクトを作成する

VisualStudio を開き、新しいWPF プロジェクトを作成します。

SQL クエリをCData ADO.NET Provider に渡すためのTextBox と、クエリを実行するためのButton を追加します。

Adding a TextBox and Button to the App.

以下は、この時点でのXAML です。


  
    
    

XamDataGrid の追加と構築

初期コントロールを追加した後、アプリにXamDataGrid を追加します。コンポーネントがVisual Studio に表示されます。

Adding the XamDataGrid to the App.

コンポーネントをデザイナーで配置して、TextBoxButton の下に配置し、アプリの境界に接するようにします。

XamDataGrid Placement.

XamDataGrid を配置したら、XAML を編集してXamDataGrid のDataSource 属性を「{Binding}」に設定し、FieldSettings のAllowRecordFilteringAllowSummaries を「true」に設定します。次に、Button コンポーネントのClick イベントハンドラーとして空のメソッドを追加します。以下は、この時点でのXAML です。


  
    
    

Outlook に接続してクエリする

ダイナミックDataGrid を使用してWPG App を構築するための最後のステップとして、リアルタイムOutlook のデータに接続し、クエリを実行します。まず、CData ADO.NET Provider への参照をプロジェクトに追加します。(通常、C:\Program Files\CData\CData ADO.NET Provider for API\lib にあります。)

Adding the CData ADO.NET Provider as a Reference (Salesforce is shown.)

次に、プロバイダーを標準のData ライブラリとともに名前空間に追加します。

using System.Data.CData.API;
using System.Data;

最後に、Outlook に接続するコードを追加し、TextBox からのテキストを使用してClick イベントハンドラーにクエリします。

OAuth 認証の設定

Microsoft Graph API は認証に OAuth 2.0 を使用します。OAuth 認証情報(Client ID と Client Secret)を取得するには、Microsoft Azure Portal でアプリケーションを登録する必要があります。

OAuth 認証情報の取得

  1. Azure Portal にログインします。
  2. Azure Active Directory > App registrations に移動します。
  3. New registration をクリックして新しいアプリケーションを作成します。
  4. アプリケーション名を入力し、適切なアカウントの種類を選択します。
  5. Redirect URI をアプリケーションのコールバック URL に設定します(デスクトップアプリの場合は http://localhost:33333 など)。
  6. Register をクリックしてアプリケーションを作成します。
  7. アプリケーションの概要ページで Application (client) ID をコピーします。これが OAuthClientId になります。
  8. Certificates & secrets に移動して、新しいクライアントシークレットを作成します。
  9. クライアントシークレットの値をコピーします。これが OAuthClientSecret になります。
  10. API permissions に移動して、必要な Microsoft Graph API の権限を追加します:
    • Mail.Read - メールメッセージへのアクセス用
    • Contacts.Read - 連絡先へのアクセス用
    • Calendars.Read - カレンダーイベントへのアクセス用
    • Tasks.Read - To Do タスクへのアクセス用
    • offline_access - リフレッシュトークンの取得用
  11. Grant admin consent をクリックして、これらの権限を付与します。

OAuth での接続

以下の接続プロパティを設定して接続を確立してください:

  • AuthScheme:OAuth に設定します。
  • InitiateOAuthGETANDREFRESH に設定します。CData API Profile for Outlook が OAuth プロセスを自動的に進め、アクセストークンを取得します。
  • OAuthClientId:Azure Portal の Application (client) ID に設定します。
  • OAuthClientSecret:Azure Portal のクライアントシークレットの値に設定します。
  • TenantId:Azure AD のテナント識別子(GUID または 'contoso.onmicrosoft.com' のようなドメイン名)に設定します。
  • CallbackURL:アプリ登録で指定したリダイレクト URI に設定します(デスクトップアプリの場合は http://localhost:33333 など)。

接続文字列の例

Profile=C:\profiles\Outlook.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;TenantId=your_tenant_id;CallbackUrl=http://localhost:33333;

private void Button_Click(object sender, RoutedEventArgs e)
{
  //connecting to Outlook
  string connString = "Profile=C:\profiles\Outlook.apip;AuthScheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;TenantId=your_tenant_id;CallbackUrl=http://localhost:33333;";
  using (var conn = new APIConnection(connString))
  {
    //using the query from the TextBox
    var dataAdapter = new APIDataAdapter(textBox.Text, conn);
    var table = new DataTable();
    dataAdapter.Fill(table);

    //passing the DataRowCollection to the DataContext
    //  for use in the XamDataGrid
    this.DataContext = table.Rows;
  }
}

アプリケーションを実行する

アプリが構築が完了したら、XamDataGrid にOutlook のデータを表示する準備が整いました。「Execute」をクリックすると、アプリはOutlook に接続し、CData ADO.NET Provider を介してSQL クエリを送信します。

Querying Outlook のデータ

リアルタイムOutlook のデータがグリッドに表示されます。

Displying Outlook データ(Salesforce is shown)

カラム名をヘッダーにドラッグ & ドロップし、データをグループ化します。

Grouping Outlook データ(Salesforce is shown)

グループ化とフィルタを追加すると、もとになるSQL クエリがOutlook に直接送信されるため、リアルタイムOutlook のデータをドリルダウンして特定の必要な情報のみを見つけることができます。

Grouped and filtered Outlook データ(Salesforce is shown)

無償トライアルと詳細

この時点で、リアルタイムOutlook のデータへのアクセスを持つダイナミックWPF アプリが作成されています。詳細については、CData ADO.NET プロバイダページをご覧ください。30日の無償評価版をダウンロードすれば、Infragistics UI コントロールを使用して構築したアプリでリアルタイムOutlook のデータを今すぐ試すことができます。

はじめる準備はできましたか?

API Driver で Outlook のライブデータに接続

Outlook に接続