LocalReport.SubreportProcessing イベント
サブレポートが処理されるときに発生します。
名前空間: Microsoft.Reporting.WebForms
アセンブリ: Microsoft.ReportViewer.WebForms (microsoft.reportviewer.webforms.dll 内)
構文
'宣言
'使用
解説
サブレポートで使用するデータ ソースにデータを指定する必要があります。それには、SubreportProcessing イベントのイベント ハンドラを指定してください。
Parameters プロパティを確認して、サブレポートに渡されたパラメータの値を調べると、それらのパラメータ値に対応するデータを指定できます。
メイン レポートに複数のサブレポートがある場合は、SubreportProcessingEventArgs クラスの ReportPath プロパティを調べて、どのサブレポートが処理されているかを判断し、そのサブレポートのデータを指定します。
このイベント ハンドラに渡される引数については、「SubreportProcessingEventArgs」を参照してください。
例
次のサンプル コートでは、サブレポートを使用してマスタ詳細レポートを実装します。このコードでは、サブレポートを含んでいるサンプル レポートを読み込んで、SubreportProcessing イベントを処理するイベント ハンドラを設定します。SubreportProcessing イベント ハンドラに渡される引数には、サブレポートをカプセル化しているオブジェクトが含まれています。イベント ハンドラによって、このサブレポートにデータ ソースのインスタンスが追加されてから、ReportViewer コントロールで表示されます。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Reporting.WebForms;
public partial class _Default : System.Web.UI.Page
{
private DataTable orderDetailsData = null;
private DataTable LoadOrdersData()
{
// Load data from XML file
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"c:\My Reports\OrderData.xml");
return dataSet.Tables[0];
}
private DataTable LoadOrderDetailsData()
{
// Load data from XML file
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"c:\My Reports\OrderDetailData.xml");
return dataSet.Tables[0];
}
void DemoSubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e)
{
if (orderDetailsData == null)
orderDetailsData = LoadOrderDetailsData();
e.DataSources.Add(new ReportDataSource("DataSet1_OrderDetails", orderDetailsData));
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Set RDL file
ReportViewer1.LocalReport.ReportPath =
@"c:\My Reports\Orders.rdlc";
// Supply a DataTable corresponding to each report dataset
ReportViewer1.LocalReport.DataSources.Add(
new ReportDataSource("DataSet1_Orders",
LoadOrdersData()));
}
// Add a handler for SubreportProcessing
ReportViewer1.LocalReport.SubreportProcessing += new
SubreportProcessingEventHandler(DemoSubreportProcessingEventHandler);
}
}
using System;
Imports System.Data
Imports Microsoft.Reporting.WebForms
Partial Class _Default
Inherits System.Web.UI.Page
Dim orderDetailsData As DataTable = Nothing
Private Function LoadOrdersData() As DataTable
Dim dataSet As New DataSet()
dataSet.ReadXml("c:\My Reports\OrderData.xml")
LoadOrdersData = dataSet.Tables(0)
End Function
Private Function LoadOrderDetailsData()
Dim dataSet As New DataSet()
dataSet.ReadXml("c:\My Reports\OrderDetailData.xml")
LoadOrderDetailsData = dataSet.Tables(0)
End Function
Public Sub DemoSubreportProcessingEventHandler(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
If (orderDetailsData Is Nothing) Then
orderDetailsData = LoadOrderDetailsData()
End If
e.DataSources.Add(New ReportDataSource("DataSet1_OrderDetails", orderDetailsData))
End Sub
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If (Not IsPostBack) Then
' Set RDL file.
ReportViewer1.LocalReport.ReportPath = "c:\My Reports\Orders.rdlc"
' Supply a DataTable corresponding to each report data source.
Dim myReportDataSource = New ReportDataSource("DataSet1_Orders", LoadOrdersData())
ReportViewer1.LocalReport.DataSources.Add(myReportDataSource)
End If
'Add a handler for drillthrough.
AddHandler ReportViewer1.LocalReport.SubreportProcessing, AddressOf DemoSubreportProcessingEventHandler
End Sub
End Class
参照
リファレンス
LocalReport クラス
LocalReport メンバ
Microsoft.Reporting.WebForms 名前空間