Partager via


Événement ReportViewer.Drillthrough

Se produit lorsqu'un élément d'extraction est sélectionné dans un rapport.

Espace de noms :  Microsoft.Reporting.WinForms
Assembly :  Microsoft.ReportViewer.WinForms (en Microsoft.ReportViewer.WinForms.dll)

Syntaxe

'Déclaration
Public Event Drillthrough As DrillthroughEventHandler
'Utilisation
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 prend en charge l'utilisation d'événements, mais pas la déclaration de nouveaux événements.

Notes

Cet événement se produit lorsqu'un élément d'extraction est sélectionné dans un rapport. Les informations sur cet événement sont transmises dans un objet DrillThroughEventArgs au délégué DrillThroughEventHandler qui gère l'événement.

Si le rapport d'extraction contient des sous-rapports, vous devez fournir les données relatives à ces sous-rapports. Pour cela, fournissez un gestionnaire d'événements SubreportProcessing au rapport d'extraction qui est transmis via l'objet DrillthroughEventArgs.

Pour charger des données relatives au rapport d'extraction, vous devez appeler la méthode DataSources.Add du rapport d'extraction qui est transmis via l'objet DrillThroughEventArgs, au lieu de l'objet LocalReport utilisé par le contrôle ReportViewer.

Le nom de la source de données ajoutée à la méthode du gestionnaire d'événements d'extraction doit correspondre au nom de la source de données spécifié dans le rapport d'extraction. Pour afficher le nom de cette source de données dans le Générateur de rapports, cliquez sur le menu Rapport, puis sélectionnez Sources de données. Vous accédez à la boîte de dialogue Sources de données du rapport, qui affiche les noms des sources de données de rapport définies dans le rapport.

Pour plus d'informations sur la gestion des événements, consultez Consuming Events.

Exemples

L'exemple de code ci-dessous charge un exemple de rapport qui contient une série d'éléments d'extraction et configure un gestionnaire d'événements afin de gérer les événements d'extraction. Les arguments transmis au gestionnaire d'événements d'extraction comprennent un objet de rapport d'extraction. Le gestionnaire d'événements ajoute une source de données à ce rapport avant le rendu du rapport d'extraction dans le contrôle ReportViewer.

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;
    }
}

L'exemple Visual Basic ci-dessous suppose que vous avez créé une application Windows contenant un formulaire et un contrôle ReportViewer.

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

Voir aussi

Référence

ReportViewer Classe

Espace de noms Microsoft.Reporting.WinForms