ReportViewer.Drillthrough-Ereignis
Tritt auf, wenn ein Drillthroughelement in einem Bericht ausgewählt wird.
Namespace: Microsoft.Reporting.WinForms
Assembly: Microsoft.ReportViewer.WinForms (in Microsoft.ReportViewer.WinForms.dll)
Syntax
'Declaration
Public Event Drillthrough As DrillthroughEventHandler
'Usage
Dim instance As ReportViewer
Dim handler As DrillthroughEventHandler
AddHandler instance.Drillthrough, handler
public event DrillthroughEventHandler Drillthrough
public:
event DrillthroughEventHandler^ Drillthrough {
void add (DrillthroughEventHandler^ value);
void remove (DrillthroughEventHandler^ value);
}
member Drillthrough : IEvent<DrillthroughEventHandler,
DrillthroughEventArgs>
JScript unterstützt die Verwendung von Ereignissen, jedoch nicht die Deklaration neuer Ereignisse.
Hinweise
Dieses Ereignis tritt auf, wenn ein Drillthroughelement in einem Bericht ausgewählt wird. Informationen zu diesem Ereignis werden in einem DrillThroughEventArgs-Objekt an den DrillThroughEventHandler-Delegaten übergeben, der das Ereignis behandelt.
Wenn der Drillthroughbericht über Unterberichte verfügt, müssen Sie Daten für diese Unterberichte angeben. Stellen Sie hierzu dem Drillthroughbericht, der über das DrillthroughEventArgs-Objekt übergeben wird, einen SubreportProcessing-Ereignishandler bereit.
Zum Laden von Daten für den Drillthroughbericht müssen Sie die DataSources.Add-Methode des Drillthroughberichts aufrufen, der über das DrillThroughEventArgs-Objekt und nicht über das vom ReportViewer-Steuerelement verwendete LocalReport-Objekt übergeben wird.
Der Name der Datenquelle, der in der Ereignishandlermethode für den Drillthrough hinzugefügt wird, muss mit dem im Drillthroughbericht angegebenen Datenquellennamen übereinstimmen. Der Name dieser Datenquelle kann im Berichts-Designer angezeigt werden. Hierzu klicken Sie im Berichts-Designer auf das Menü Bericht und wählen die Option Datenquellen aus. Dadurch wird das Dialogfeld Berichtsdatenquellen geöffnet, in dem die Namen der im Bericht definierten Berichtsdatenquellen angezeigt werden.
Weitere Informationen zur Behandlung von Ereignissen finden Sie unter Consuming Events.
Beispiele
Im folgenden Beispielcode wird ein Beispielbericht mit einer Reihe von Drillthroughelementen geladen und ein Ereignishandler zur Behandlung der Drillthroughereignisse eingerichtet. Zu den an den Drillthrough-Ereignishandler übergebenen Argumenten gehört auch ein Drillthrough-Berichtsobjekt. Der Ereignishandler fügt diesem Bericht eine Datenquelle hinzu, bevor der Drillthroughbericht im ReportViewer-Steuerelement gerendert wird.
using System;
using System.Data;
using System.Windows.Forms;
using Microsoft.Reporting.WinForms;
public class Demo : Form
{
private DataTable LoadEmployeesData()
{
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"c:\employees.xml");
return dataSet.Tables[0];
}
private DataTable LoadDepartmentsData()
{
DataSet dataSet = new DataSet();
dataSet.ReadXml(@"c:\departments.xml");
return dataSet.Tables[0];
}
void DemoDrillthroughEventHandler(object sender,
DrillthroughEventArgs e)
{
LocalReport localReport = (LocalReport)e.Report;
localReport.DataSources.Add(new ReportDataSource("Employees",
LoadEmployeesData()));
}
public Demo()
{
this.Text = "Report Control Demo";
this.ClientSize = new System.Drawing.Size(950, 600);
ReportViewer reportViewer = new ReportViewer();
// Set Processing Mode.
reportViewer.ProcessingMode = ProcessingMode.Local;
// Set RDL file.
reportViewer.LocalReport.ReportPath = @"c:\Departments.rdlc";
// Supply a DataTable corresponding to each report
// data source.
reportViewer.LocalReport.DataSources.Add(
new ReportDataSource("Departments",
LoadDepartmentsData()));
// Add a handler for drillthrough.
reportViewer.Drillthrough += new
DrillthroughEventHandler(DemoDrillthroughEventHandler);
// Add the reportviewer to the form.
reportViewer.Dock = DockStyle.Fill;
this.Controls.Add(reportViewer);
// Process and render the report.
reportViewer.RefreshReport();
}
[STAThread]
public static int Main(string[] args)
{
Application.Run(new Demo());
return 0;
}
}
Im nachfolgenden Visual Basic-Beispiel wird davon ausgegangen, dass Sie eine Windows-Anwendung mit einem Formular und einem ReportViewer-Steuerelement erstellt haben.
Imports System.Data
Imports Microsoft.Reporting.WinForms
Public Class Form1
Private Function LoadEmployeesData() As DataTable
Dim dataSet As New DataSet()
dataSet.ReadXml("c:\My Reports\employees.xml")
LoadEmployeesData = dataSet.Tables(0)
End Function
Private Function LoadDepartmentsData()
Dim dataSet As New DataSet()
dataSet.ReadXml("c:\My Reports\departments.xml")
LoadDepartmentsData = dataSet.Tables(0)
End Function
Public Sub DemoDrillthroughEventHandler(ByVal sender As Object, _
ByVal e As DrillthroughEventArgs)
Dim localReport = e.Report
localReport.DataSources.Add(New ReportDataSource( _
"Employees", LoadEmployeesData()))
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
ReportViewer1.ProcessingMode = ProcessingMode.Local
Dim localReport = ReportViewer1.LocalReport
''Set RDL file.
localReport.ReportPath = "c:\My Reports\Departments.rdlc"
'' Supply a DataTable corresponding to each report
'' data source.
Dim myReportDataSource = New ReportDataSource( _
"Departments", LoadDepartmentsData())
localReport.DataSources.Add(myReportDataSource)
''Add a handler for drillthrough.
AddHandler ReportViewer1.Drillthrough, _
AddressOf DemoDrillthroughEventHandler
'' Process and render the report.
Me.ReportViewer1.RefreshReport()
End Sub
End Class