LocalReport.SubreportProcessing-Ereignis
Tritt auf, wenn ein Unterbericht verarbeitet wird.
Namespace: Microsoft.Reporting.WebForms
Assembly: Microsoft.ReportViewer.WebForms (in microsoft.reportviewer.webforms.dll)
Syntax
'Declaration
'Usage
Hinweise
Sie müssen Daten für alle Datenquellen bereitstellen, die in Unterberichten verwendet werden. Hierzu müssen Sie einen Ereignishandler für das SubreportProcessing-Ereignis bereitstellen.
An den Unterbericht übergebene Werte können Sie überprüfen, indem Sie die Parameters-Eigenschaft überprüfen und Daten bereitstellen, die diesen Parameterwerten entsprechen.
Wenn der Hauptbericht mehrere Unterberichte enthält, können Sie die ReportPath-Eigenschaft der SubreportProcessingEventArgs-Klasse überprüfen, um zu ermitteln, welcher Unterbericht verarbeitet wird, und für diesen Unterbericht dann Daten bereitstellen.
Eine Beschreibung der an diesen Ereignishandler übergebenen Argumente finden Sie unter SubreportProcessingEventArgs.
Beispiel
Im folgenden Beispielcode wird ein Masterdetailbericht mithilfe von Unterberichten implementiert. Der Code lädt einen Beispielbericht, der einen Unterbericht enthält, und richtet einen Ereignishandler für die Behandlung des SubreportProcessing-Ereignisses ein. Zu den an den SubreportProcessing-Ereignishandler übergebenen Argumenten gehört ein Objekt, das den Unterbericht kapselt. Der Ereignishandler fügt diesem Unterbericht eine Datenquelleninstanz hinzu, bevor dieser Bericht im ReportViewer-Steuerelement gerendert wird.
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
Siehe auch
Referenz
LocalReport-Klasse
LocalReport-Member
Microsoft.Reporting.WebForms-Namespace