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