作成日: 2022/04/20 最終更新日: 2022/04/20
文書種別
使用方法
詳細
本文書では、DataTableに格納したデータをレポートに設定する方法を説明します。
一例として、以下のメソッドの戻り値をレポートに設定します。
◆サンプルコード (C#)
private DataTable getData() { var data = new DataTable(); // データの取得処理など return data; }
◆サンプルコード (VB.NET)
Private Function getData() As DataTable Dim data As New DataTable ' データの取得処理など Return data End Function
レポートの種類によって方法が異なります。以下をご確認ください。
ページレポート/RDLレポートの場合
LocateDataSourceイベントを経由してDataTableを設定します。
◆サンプルコード (C#)
private void Form1_Load(object sender, EventArgs e) { var rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport1.rdlx")); var doc = new GrapeCity.ActiveReports.Document.PageDocument(rpt); // イベントハンドラを追加 doc.LocateDataSource += doc_LocateDataSource; // ラムダ式で記述する場合 //doc.LocateDataSource += (s, args) => args.Data = getData(); viewer1.LoadDocument(doc); } private void doc_LocateDataSource(Object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args ) { args.Data = getData(); }
◆サンプルコード (VB.NET)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim rpt As New GrapeCity.ActiveReports.PageReport(New IO.FileInfo("PageReport1.rdlx")) Dim doc As New GrapeCity.ActiveReports.Document.PageDocument(rpt) ' イベントハンドラを追加 AddHandler doc.LocateDataSource, AddressOf doc_LocateDataSource ' ラムダ式で記述する場合 'AddHandler doc.LocateDataSource, Sub(s, args) args.Data = getData() Viewer1.LoadDocument(doc) End Sub Private Sub doc_LocateDataSource(ByVal sender As Object, ByVal args As GrapeCity.ActiveReports.LocateDataSourceEventArgs) args.Data = getData() End Sub
ただし、LocateDataSourceイベントはそのままでは発生しません。レポート側でも設定が必要です。
まず、データソースを追加し、種類に「Dataset Provider」を選択します。
次に、データセットを追加し、フィールドを登録します。
ここで登録したフィールド名をコントロールに設定したら、準備完了です。
レポートの実行時にLocateDataSourceイベントが発生し、DataTableのデータがレポートに渡されます。
セクションレポートの場合
DataSourceプロパティにDataTableを設定します。
◆サンプルコード (C#)
var rpt = new SectionReport1(); rpt.DataSource = getData(); rpt.Run(); viewer1.Document = rpt.Document;
◆サンプルコード (VB.NET)
Dim rpt As New SectionReport1 rpt.DataSource = getData() rpt.Run() Viewer1.Document = rpt.Document
DataTableのカラム名でフィールドが自動的に追加されます。
TextBoxなどのDataFieldプロパティに表示したいフィールド名を設定してください。