作成日: 2022/04/20 最終更新日: 2023/09/26
文書種別
使用方法
詳細
JSビューワに表示するレポートのデータソースを動的に変更したい場合、以下の方法が考えられます。
LocateDataSourceイベントを使用する方法(ページレポート/RDLレポートのみ)
StartupクラスでLocateDataSourceのイベントハンドラを設定し、レポートのデータソースにDataTableなどのオブジェクトを渡すことができます。
app.UseReporting(settings => { settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType())); settings.UseCompression = true; settings.LocateDataSource = args => { var data = new System.Data.DataTable(); data.Columns.Add("field1"); data.Rows.Add("Sample Text"); return data; }; });
レポート側の設定方法については、以下の文書をご確認ください。
レポートのデータソースとしてDataTableを設定する方法
パラメータを経由してフィルタを設定する方法(ページレポート/RDLレポートのみ)
JSビューワでは、初期化オプションのreportParametersやopenReportメソッドの第2引数を使用して、レポートのパラメータに値を渡すことができます。
const param = [ { name: 'ReportParameter1', values: [100] } ]; viewer.openReport("PageReport1.rdlx", param);
パラメータに渡した値を使用して、レポートに出力するデータにフィルタを設定することができます。
レポート側の設定方法については、以下の文書をご確認ください。
パラメータを経由してJSONデータを設定する方法
JSONデータは文字列にシリアライズしてパラメータに渡すことができます。
const param = [ { name: 'ReportParameter1', values: [JSON.stringify(data)] } ]; viewer.openReport("PageReport1.rdlx", param);
ページレポート/RDLレポートの場合、データソースの種類に"Json Provider"を指定し、以下の式を設定します。
="jsondata=" & Parameters!ReportParameter1.Value
具体的な実装方法はこちらのサンプルをご確認ください。
※データソースにパラメータを設定した状態でデータセットを追加する場合、クエリデザイナを使用することができず、クエリやフィールドをすべて手動で設定する必要があります。
一旦、テスト用のJSONファイル等に接続した状態でデータセットを追加してからパラメータに変更することをお勧めします。
この方法のみ、セクションレポートにも適用可能です。
DataInitializeイベントでJsonDataSourceを設定します。
private void SectionReport1_DataInitialize(object sender, EventArgs e) { var data = new JsonDataSource(); data.JsonData = this.Parameters["ReportParameter1"].Value; data.JsonPath = "$.[*]"; this.DataSource = data; }
XML形式セクションレポート(.rpx)の場合はスクリプトに処理を実装します。
using GrapeCity.ActiveReports.SectionReportModel; using GrapeCity.ActiveReports.Data; public void ActiveReport_DataInitialize() { var data = new JsonDataSource(); data.JsonData = rpt.Parameters["ReportParameter1"].Value; data.JsonPath = "$.[*]"; rpt.DataSource = data; }