Событие 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 и указав данные, соответствующие значениям этих параметров.

Если основной отчет содержит несколько вложенных отчетов, можно изучить свойство ReportPath класса SubreportProcessingEventArgs, чтобы определить, какой вложенный отчет обрабатывается, и указать данные для этого вложенного отчета.

Описание аргументов, передаваемых в обработчик события, см. в разделе 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