作成日: 2026/03/25 最終更新日: 2026/03/25
文書種別
使用方法
詳細
レポートのデータソースを動的に変更する直接的な機能は、Blazorビューワには用意されておりません。
代替案としては、パラメータを経由してJSONデータをレポートに渡す方法が考えられます。
Razorページ側の実装例
データオブジェクトをJSON文字列にシリアライズし、レポートのパラメータに渡します。
@using System.Text.Json;
<div class="main">
<div id="viewerContainer">
<ReportViewer @ref="_viewer"
ReportName="@_currentReport"
Parameters="@_params"
/>
</div>
</div>
@code{
private ReportViewer _viewer;
private string _currentReport;
private Parameter[] _params;
protected override void OnInitialized()
{
_currentReport = "PageReport1.rdlx";
//_currentReport = "BlazorViewerServerApp1.Reports.SectionReport1";
var data = new List<TestData>();
data.Add(new TestData(1, 101));
data.Add(new TestData(1, 102));
data.Add(new TestData(1, 103));
data.Add(new TestData(2, 201));
data.Add(new TestData(3, 301));
var jsonString = JsonSerializer.Serialize(data);
_params = new Parameter[]
{
new Parameter
{
Name = "ReportParameter1",
Values = new string[]{ jsonString }
}
};
}
private class TestData{
public int field1 { get; private set; }
public int field2 { get; private set; }
public TestData(int field1, int field2)
{
this.field1 = field1;
this.field2 = field2;
}
}
}
レポート側の実装例
ページレポート/RDLレポートの場合
データソースの種類に"Json Provider"を指定し、以下の式を設定します。
="jsondata=" & Parameters!ReportParameter1.Value※データソースにパラメータを設定した状態でデータセットを追加する場合、クエリデザイナを使用することができず、クエリやフィールドをすべて手動で設定する必要があります。
一旦、テスト用のJSONファイル等に接続した状態でデータセットを追加してからパラメータに変更することをお勧めします。コード形式セクションレポートの場合
DataInitializeイベントに以下の処理を実装します。
private void SectionReport1_DataInitialize(object sender, EventArgs e) { var data = new JsonDataSource(); data.JsonData = this.Parameters["ReportParameter1"].Value; data.JsonPath = "$.[*]"; this.DataSource = data; }XML形式セクションレポートの場合
スクリプトに以下の処理を実装します。
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; }