Freigeben über


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

Siehe auch

Verweis

ReportViewer Klasse

Microsoft.Reporting.WinForms-Namespace