É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