Partager via


Événement LocalReport.SubreportProcessing

Se produit lors du traitement d'un sous-rapport.

Espace de noms :  Microsoft.Reporting.WebForms
Assembly :  Microsoft.ReportViewer.WebForms (en Microsoft.ReportViewer.WebForms.dll)

Syntaxe

'Déclaration
Public Event SubreportProcessing As SubreportProcessingEventHandler
'Utilisation
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 prend en charge l'utilisation d'événements, mais pas la déclaration de nouveaux événements.

Notes

L'événement SubreportProcessing est déclenché pour chaque instance du sous-rapport dans le rapport principal, et non uniquement pour la définition de chaque sous-rapport. Si un rapport contient plusieurs instances de sous-rapport pour la même définition de rapport, cet événement est déclenché pour chaque instance.

Vous devez fournir des données pour toutes les sources de données utilisées dans les sous-rapports. Pour cela, vous devez fournir un gestionnaire d'événements pour l'événement SubreportProcessing.

Pour examiner les valeurs des paramètres transmis au sous-rapport, examinez la propriété Parameters et fournissez les données correspondant à ces valeurs de paramètres.

Si le rapport principal contient plusieurs sous-rapports, vous pouvez examiner la propriété ReportPath de la classe SubreportProcessingEventArgs pour déterminer le sous-rapport en cours de traitement et fournir les données pour ce sous-rapport.

Pour une description des arguments transmis à ce gestionnaire d'événements, consultez SubreportProcessingEventArgs.

Exemples

L'exemple de code ci-dessous implémente un rapport en mode Maître/Détails à l'aide de sous-rapports. Le code charge un exemple de rapport qui contient un sous-rapport et configure un gestionnaire d'événements pour gérer l'événement SubreportProcessing. Les arguments transmis au gestionnaire d'événements SubreportProcessing incluent un objet qui encapsule le sous-rapport. Le gestionnaire d'événements ajoute une instance de source de données à ce sous-rapport avant son rendu dans le contrôle 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

Voir aussi

Référence

LocalReport Classe

Espace de noms Microsoft.Reporting.WebForms