Compartir a través de


Evento LocalReport.SubreportProcessing

Ocurre cuando se procesa un informe integrado.

Espacio de nombres: Microsoft.Reporting.WebForms
Ensamblado: Microsoft.ReportViewer.WebForms (en microsoft.reportviewer.webforms.dll)

Sintaxis

'Declaración
'Uso

Comentarios

Se deben proporcionar datos para todos los orígenes de datos utilizados en los informes integrados. Para ello, debe proporcionar un controlador de eventos para el evento SubreportProcessing.

Los valores de los parámetros pasados al informe integrado se pueden analizar examinando la propiedad Parameters y proporcionando los datos correspondientes a estos valores de parámetros.

Si el informe principal contiene varios informes integrados, se puede examinar la propiedad ReportPath de la clase SubreportProcessingEventArgs para determinar qué informe integrado se está proporcionando y suministrar los datos para ese informe integrado.

Vea SubreportProcessingEventArgs para obtener una descripción de los argumentos que se han pasado a este controlador de eventos.

Ejemplo

El siguiente código de ejemplo implementa un informe de detalles maestros mediante informes integrados. El código carga un informe de ejemplo que contiene un informe integrado y configura un controlador de eventos para procesar el evento SubreportProcessing. Los argumentos que se han pasado al controlador de eventos SubreportProcessing incluyen un objeto que encapsula el informe integrado. El controlador de eventos agrega una instancia de origen de datos a este informe integrado antes de representarlo en el control 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

Consulte también

Referencia

Clase LocalReport
Miembros LocalReport
Espacio de nombres Microsoft.Reporting.WebForms