Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Ocurre cuando se procesa un subinforme.
Espacio de nombres: Microsoft.Reporting.WebForms
Ensamblado: Microsoft.ReportViewer.WebForms (en Microsoft.ReportViewer.WebForms.dll)
Sintaxis
'Declaración
Public Event SubreportProcessing As SubreportProcessingEventHandler
'Uso
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 admite el uso de eventos, pero no la declaración de otros nuevos.
Comentarios
El evento SubreportProcessing se desencadena para cada instancia del subinforme existente en el informe principal, y no solo para cada definición de subinforme. Si un informe contiene varias instancias de subinformes procedentes de la misma definición de informe, este evento se desencadena para cada instancia.
Se deben proporcionar datos para todos los orígenes de datos utilizados en los subinformes. Para ello, debe proporcionar un controlador de eventos para el evento SubreportProcessing.
Los valores de los parámetros pasados al subinforme se pueden analizar examinando la propiedad Parameters y proporcionando los datos correspondientes a estos valores de parámetros.
Si el informe principal contiene varios subinformes, se puede examinar la propiedad ReportPath de la clase SubreportProcessingEventArgs para determinar qué subinforme se está proporcionando y suministrar los datos para ese subinforme.
Vea SubreportProcessingEventArgs para obtener una descripción de los argumentos que se han pasado a este controlador de eventos.
Ejemplos
El siguiente ejemplo de código implementa un informe de detalles maestros mediante subinformes. El código carga un informe de ejemplo que contiene un subinforme 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 subinforme. El controlador de eventos agrega una instancia de origen a este subinforme 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