作成日: 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;
}