SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

高機能データグリッドを使用して
従業員情報を出力するWPFアプリケーションを作成する

WPF用データグリッドの利用とXPS形式のエクスポート

  • X ポスト
  • このエントリーをはてなブックマークに追加

ボタンクリックイベントでデータをバインド

 「Window1.xaml」に戻り、bindBtnのクリックイベントハンドラーを設定します。

<Button Name="bindBtn" Content="データをバインド" Margin="20, 5" Click="bindBtn_Click"  />

 Window1.xaml.cs に移動し、イベント ハンドラー内で営業担当の情報を取得するコードを記述します。

private void bindBtn_Click(object sender, RoutedEventArgs e)
{
    // データをDBから取得します。
    DataModels.AdventureWorksEntities awe = new NASalesForce_CS.DataModels.AdventureWorksEntities();
    var salesp = awe.SalesPerson
        .Select(
        sp => new
        {
            ID = sp.Employee.EmployeeID,
            氏 = sp.Employee.Contact.LastName,
            名 = sp.Employee.Contact.FirstName,
            Email = sp.Employee.Contact.EmailAddress,
            雇用開始日 = sp.Employee.HireDate,
            売上 = sp.SalesYTD,
        });

    // 取得したデータをグリッドにバインドします。
    this.xamDataGrid1.DataSource = salesp;
}

 プロジェクトを実行し、データがバインドされていることやフィールドの移動、固定機能などが使用できることを確認します。

図9 - 実行結果
図9 - 実行結果

グリッドに表示したデータをエクスポート

 NetAdvantage WPF 2009 Volume1ではエクスポート機能が提供されたため、グリッドに表示したデータをXPS形式で出力することができます。exportBtnのクリックイベントハンドラーを定義します。

<Button Name="exportBtn" Content="データをエクスポート" Margin="20, 5" Click="exportBtn_Click"  />

 「Window1.xaml.cs」へ移動し、Infragistics.Windows.Reportingをインクルードします。

using Infragistics.Windows.Reporting;

 イベントハンドラーでレポートオブジェクトを作成し、ファイルにエクスポートします。

private void exportBtn_Click(object sender, RoutedEventArgs e)
{
    // レポート オブジェクトを作成します。
    Report reportObj = new Report();
    // セクションを作成します。
    EmbeddedVisualReportSection section = new EmbeddedVisualReportSection(this.xamDataGrid1);
    // レポートにセクションを追加します。
    reportObj.Sections.Add(section);
    // ファイルに保存します。
    reportObj.Export(OutputFormat.XPS, @"grid.xps");
    // ファイルを開きます。
    System.Diagnostics.Process.Start(@"grid.xps");
}

 実行するとXPSビューアーが起動します。

図10 - XPSビューアー
図10 - XPSビューアー

テーマ切り替えを行うために、リソースおよびデータバインディングを設定する

 以前の記事でも触れましたが、NetAdvantage WPFにはあらかじめいくつかのテーマが提供されています。今回はテーマをランタイムで選択できるように設定します。まず、WindowのリソースにObjectDataProviderを宣言し、ThemeManagerからテーマ一覧を取得します。

<Window.Resources>
    <!--テーマ一覧を取得します。-->
    <ObjectDataProvider MethodName="GetThemes" ObjectType="{x:Type igThemes:ThemeManager}" x:Key="igThemesSelection" />
</Window.Resources>

 次に、xamOutlookBarに追加したthemeBoxのItemsSourceにこのObjectDataProviderを設定します。

<!--ItemsSource を設定します。-->
<ComboBox Name="themeBox" Margin="20,5" ItemsSource="{Binding Source={StaticResource igThemesSelection}}" />

 最後にxamOutlookBar、xamDataGridのThemeプロパティをこのコンボボックスの値にバインドします。

<igOutlookBar:XamOutlookBar Name="xamOutlookBar1" DockPanel.Dock="Left" Width="200"
Theme="{Binding ElementName=themeBox, Path=SelectedItem}">
<igDP:XamDataGrid Name="xamDataGrid1" Language="Ja-JP"
Theme="{Binding ElementName=themeBox, Path=SelectedItem}" >

 プロジェクトを実行し、テーマを選択した際に、外観が変化することを確認してください。

 一部のテーマではxamOutlookBarの外観が変化しません。これは選択されたテーマ名に相当するテーマが現時点では提供されていないためです。

まとめ

 Microsoft Office Outlook 2007のナビゲーション、さらにxamDataGridを用いることにより、WPF業務用アプリケーションを迅速に開発することができました。また、提供されているテーマを使用することにより、外観の設定に必要な時間を短縮することも可能となりました。今回紹介した機能以外にもxamDataGridでは多くの機能を提供していますので、ぜひ試してみてください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

インフラジスティックス・ジャパン株式会社 池原 大然(イケハラ ダイゼン)

国内ベンチャー企業にて.NETエンジニアとして開発に従事、2007年インフラジスティックス・ジャパンに入社。現在デベロッパー エバンジェリストとして、.NETやWPF/Silverlight製品や技術の啓蒙活動を行う。Microsoft MVP for Client App Dev 2010/04 ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4127 2009/07/07 14:27

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング