다음을 통해 공유


LocalReport.SubreportProcessing 이벤트

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

네임스페이스:  Microsoft.Reporting.WinForms
어셈블리:  Microsoft.ReportViewer.WinForms(Microsoft.ReportViewer.WinForms.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.Windows.Forms;
using Microsoft.Reporting.WinForms;

public class Demo : Form
{
    private DataTable orderDetailsData = null;

    private DataTable LoadOrdersData()
    {
        // Load data from XML file.
        DataSet dataSet = new DataSet();
        dataSet.ReadXml(@"c:\OrderData.xml");
        return dataSet.Tables[0];
    }

    private DataTable LoadOrderDetailsData()
    {
        // Load data from XML file.
        DataSet dataSet = new DataSet();
        dataSet.ReadXml(@"c:\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));
    }

    public Demo()
    {
        this.Text = "Report Control Demo";
        this.ClientSize = new System.Drawing.Size(700, 600);

        ReportViewer reportViewer = new ReportViewer();

        // Set Processing Mode.

        reportViewer.ProcessingMode = ProcessingMode.Local;

        // Set RDL file.

        reportViewer.LocalReport.ReportPath = @"c:\Orders.rdlc";

        // Add a handler for SubreportProcessing.

        reportViewer.LocalReport.SubreportProcessing +=
                    new SubreportProcessingEventHandler(DemoSubreportProcessingEventHandler);

        // Supply a DataTable corresponding to each report dataset.

        reportViewer.LocalReport.DataSources.Add(
            new ReportDataSource("DataSet1_Orders", LoadOrdersData()));

        // Add the reportviewer to the form.

        reportViewer.Dock = DockStyle.Fill;
        this.Controls.Add(reportViewer);

        // Process and render the report.

        reportViewer.RefreshReport();
    }

    [STAThread]
    public static int Main(string[] args)
    {
        Application.Run(new Demo());
        return 0;
    }
}
Option Explicit On
Imports System
Imports System.Drawing
Imports Microsoft.Reporting.WinForms

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private orderDetailsData As DataTable = Nothing
    Friend WithEvents ReportViewer1 As Microsoft.Reporting.WinForms.ReportViewer

    Function LoadOrdersData() As DataTable
        ' Load
        Dim dataSet As New DataSet()
        dataSet.ReadXml("c:\MyReports\OrderData.xml")
        Return dataSet.Tables(0)

    End Function

    Function LoadOrderDetailsData() As DataTable
        Dim dataSet As New DataSet()
        dataSet.ReadXml("c:\MyReports\OrderDetailData.xml")
        Return 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 Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.ReportViewer1 = New Microsoft.Reporting.WinForms.ReportViewer
        Me.ReportViewer1.Dock = System.Windows.Forms.DockStyle.Fill

        Me.Text = "Report Control Demo"
        Me.ClientSize = New System.Drawing.Size(700, 600)
        Me.ReportViewer1.ProcessingMode = ProcessingMode.Local
        Me.ReportViewer1.LocalReport.ReportPath = "c:\MyReports\Orders.rdlc"
        AddHandler Me.ReportViewer1.LocalReport.SubreportProcessing, AddressOf DemoSubreportProcessingEventHandler
        Me.ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1_Orders", LoadOrdersData()))
        Me.Controls.Add(ReportViewer1)
        Me.ReportViewer1.RefreshReport()

    End Sub

End Class

참고 항목

참조

LocalReport 클래스

Microsoft.Reporting.WinForms 네임스페이스