다음을 통해 공유


LocalReport.SubreportProcessing 이벤트

포함된 보고서가 처리될 때 발생합니다.

네임스페이스:  Microsoft.Reporting.WebForms
어셈블리:  Microsoft.ReportViewer.WebForms(Microsoft.ReportViewer.WebForms.dll)

구문

‘선언
Public Event SubreportProcessing As SubreportProcessingEventHandler
‘사용 방법
Dim instance As LocalReport
Dim handler As SubreportProcessingEventHandler

AddHandler instance.SubreportProcessing, handler
public event SubreportProcessingEventHandler SubreportProcessing
public:
 event SubreportProcessingEventHandler^ SubreportProcessing {
    void add (SubreportProcessingEventHandler^ value);
    void remove (SubreportProcessingEventHandler^ value);
}
member SubreportProcessing : IEvent<SubreportProcessingEventHandler,
    SubreportProcessingEventArgs>
JScript는 이벤트 사용을 지원하지만 새로운 이벤트 선언은 지원하지 않습니다.

주의

SubreportProcessing 이벤트는 각 포함된 보고서 정의에 대해 트리거될 뿐만 아니라 주 보고서의 모든 포함된 보고서 인스턴스에 대해 트리거됩니다. 보고서에 동일한 보고서 정의의 여러 포함된 보고서 인스턴스가 들어 있는 경우 이 이벤트는 각 인스턴스에 대해 트리거됩니다.

포함된 보고서에 사용된 데이터 소스에 대한 데이터를 제공해야 합니다. 이렇게 하려면 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 클래스

Microsoft.Reporting.WebForms 네임스페이스