GrapeCity ActiveReports for .NET 16.0J
サブレポート - JSONデータ
ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > セクションレポートのチュートリアル > レイアウト > サブレポート - JSONデータ

JSONデータの処理方法は、他のデータ類とは異なります。このチュートリアルでは、親レポートでJSONデータソースに連結されたサブレポートの設定方法を紹介します。

このトピックでは、以下のタスクを行います。

チュートリアルを完了すると、次のようなレポートが作成されます。

デザイン時のレイアウト

Subreport with JSON data at run time

実行時のレイアウト

Subreports with JSON data at Run Time

Visual StudioプロジェクトにActiveReportを追加する

  1. Visual Studioで新規プロジェクトを開きます。
  2. [プロジェクト]メニューから[新しい項目の追加]を選択します。
  3. [新しい項目を追加]ダイアログ から[ActiveReports 16.0 セクションレポート(コード)]を選択し、ファイル名を「MainReport」に変更します。
  4. [追加]ボタンをクリックします。
  5. [プロジェクト]メニューから[新しい項目の追加]を選択します。
  6. [新しい項目を追加]ダイアログ から [ActiveReports 16.0 セクションレポート(コード)]を選択し、ファイル名を「SubReport」に変更します。
  7. [追加]ボタンをクリックします。

詳細は、「クイックスタート」参照してください。

親レポート(MainReport)をJSONデータソースに接続する

  1. レポートのDetailセクションのバンドから、データソースのアイコンをクリックします。
    Data Source icon
  2. [レポートデータソース]ダイアログで、[JSON]タブを選択します。
  3. [接続文字列]の横にある[作成]ボタンをクリックして、[JSONデータソースの設定]ウィザードを開きます。
  4. [URI/パス]に、次のJSONファイルのURLを指定します。
    JSONファイルのURL
    コードのコピー
    https://demodata.grapecity.com/northwind/odata/v1/Categories?$expand=Products
    

    [接続文字列]セクションには、生成された接続文字列が次のように表示されます。                   

    接続文字列
    コードのコピー
    jsondoc=https://demodata.grapecity.com/northwind/odata/v1/Categories?$expand=Products
    
  5. [OK]をクリックして変更を保存し、ウィザードを閉じます。
  6. [JSONパス]フィールドに次のクエリを入力して、上記で定義したJSONパスから必要なデータを取得します。
               
    クエリ
    コードのコピー
    $.value[*]
    
  7. [OK]をクリックしてデータソースを保存し、デザイン面に戻ります。

親レポート(MainReport)のレイアウトを作成する

  1. デザイン面より、pageHeaderを選択し、[プロパティ]ウィンドウからHeightプロパティを「0.3」に設定します。
  2. デザイン面より、Detailセクションを選択し、[プロパティ]ウィンドウからCanShrinkプロパティを「True」に設定し、空白スペースを削除します。
  3. ツールボックスから、PageHeaderセクション上に「Label」をドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。
    プロパティ名 プロパティの値
    Text 商品詳細
    Location 0, 0 in
    Size 6.5, 0.25 in
    Font Arial, 14pt, style=Bold
    Alignment Center
  4. ツールボックスから、Detailセクションに以下のコントロールをドラッグし、各コントロールのプロパティを以下のように変更します。

    Label1

    プロパティ名 プロパティの値
    Text カテゴリ名:
    Location 0, 0 in
    Size 1.2, 0.2 in
    Font Bold True

    TextBox1

    プロパティ名 プロパティの値
    DataField CategoryName
    Location 1.2, 0 in
    Size 2, 0.2 in

    Label2

    プロパティ名 プロパティの値
    Text 商品:
    Location 1.2, 0.25 in
    Size 1, 0.2 in
    Font Bold True

    Subreport

    プロパティ名 プロパティの値
    Location 2.3, 0.25 in
    Size 4, 1 in

子レポート(SubReport)のレイアウトを作成する

  1. デザイン面より、Detailセクションを選択し、[プロパティ]ウィンドウから以下のプロパティを設定します。 
    プロパティ名 プロパティの値
    CanShrink True
    BackColor WhiteSmoke
    ヒント: レポートの最終的な出力結果に色を適用したくない場合であっても、サブレポートの背景に色を使用することで、レイアウト関連の問題を容易に見つけることができます。
  2. デザイン面で、pageHeaderやpageFooterセクションを選択し、[削除]をクリックします。サブレポートはこのセクションを描画しないので、これらのセクションを削除すると処理時間を削減できます。
  3. ツールボックスから、Detailセクションに以下のコントロールをドラッグし、[プロパティ]ウィンドウから以下のプロパティを設定します。

    TextBox1

    プロパティ名 プロパティの値
    DataField ProductName
    Name txtProductName
    Location 0, 0 in
    Size 2.9, 0.2 in

    TextBox2

    Property Name プロパティの値
    DataField UnitPrice
    Name txtUnitPrice
    Location 3, 0 in
    Size 1, 0.2 in
    Alignment Right
    OutputFormat ¥#,##0.00(またはダイアログで通貨を選択します)

子レポート(SubReport)の新インスタンスを作成する

注意: Formatイベントでサブレポートの新しいインスタンスを作成しないでください。Formatを実行するごとに新しいサブレポートが作成されるので、大量のメモリが消費されます。

Visual Basic

  1. [MainReport]のデザイン面を右クリックし、[コードの表示]を選択します。
  2. レポートのコードビューの上部左側のドロップダウンキーをクリックし、MainReportイベントを選択します。
  3. レポートのコードビューの上部右側のドロップダウンキーをクリックし、「ReportStart」を選択し、レポートのReportStartイベントのイベント処理メソッドを作成します。
  4. ハンドラに以下のコードを追加し、SubReportの新しいインスタンスを作成します。
Visual Basicコード(ReportStartイベントの上に貼り付けます)
コードのコピー
Dim rpt As SubReport
Visual Basicコード(ReportStartイベント内に貼り付けます)
コードのコピー
rpt = New SubReport

C#

  1. 「MainReport」の下にあるグレーの領域を選択します。
  2. [プロパティ]ウィンドウにあるイベントのアイコンをクリックし、レポートのイベントの一覧を表示します。
  3. ReportStartイベントをダブルクリックし、レポートのReportStartイベントのイベント処理メソッドを作成します。
  4. ハンドラに以下のコードを追加し、SubReportの新しいインスタンスを作成します。
C#コード(ReportStartイベントの上貼り付けます)
コードのコピー
private SubReport rpt;
C#コード(ReportStartイベント内に貼り付けます)
コードのコピー
rpt = new SubReport();

親レポートのデータのサブセットを子レポートに渡す

親レポートのデータのサブセットを子レポートに渡すには、以下の手順を行います。

  1. MainReportのデザイン面に、Detailセクション上をダブルクリックし、Detail_Formatイベントを作成します。
  2. ハンドラにコードを追加し、以下の処理を実装します。
    • 新規のGrapeCity JSONデータソースを作成する
    • 新しいデータソースをMainReportのデータソースとして型キャストする
    • 有効なJSONパスの式を指定する
    • サブレポートに新しいデータソースを渡す
    • Subreportコントロールにサブレポートを表示する

Visual Basic

Visual Basicコード(Formatイベント内に貼り付けます)
コードのコピー
Dim jsonDS As New GrapeCity.ActiveReports.Data.JsonDataSource
jsonDS.JsonData = (CType(Me.DataSource, GrapeCity.ActiveReports.Data.JsonDataSource)).Field("Products").ToString()
jsonDS.JsonPath = "$.[*]"
rpt.DataSource = jsonDS
SubReport1.Report = rpt

C#

C#コード(Formatイベント内に貼り付けます)
コードのコピー
GrapeCity.ActiveReports.Data.JsonDataSource jsonDS = new GrapeCity.ActiveReports.Data.JsonDataSource();
jsonDS.JsonData = ((GrapeCity.ActiveReports.Data.JsonDataSource)this.DataSource).Field("Products").ToString();
jsonDS.JsonPath = "$.[*]";
rpt.DataSource = jsonDS;
subReport1.Report = rpt;

レポートを表示する

関連トピック