Compartir a través de


ReportViewer.Drillthrough (Evento)

Se produce cuando se selecciona un elemento de obtención de detalles en un informe.

Espacio de nombres:  Microsoft.Reporting.WinForms
Ensamblado:  Microsoft.ReportViewer.WinForms (en Microsoft.ReportViewer.WinForms.dll)

Sintaxis

'Declaración
Public Event Drillthrough As DrillthroughEventHandler
public event DrillthroughEventHandler Drillthrough
public:
 event DrillthroughEventHandler^ Drillthrough {
    void add (DrillthroughEventHandler^ value);
    void remove (DrillthroughEventHandler^ value);
}
member Drillthrough : IEvent<DrillthroughEventHandler,
    DrillthroughEventArgs>
JScript no admite eventos.

Comentarios

Este evento se produce cuando se selecciona un elemento de obtención de detalles en un informe.La información sobre este evento se pasa en un objeto de DrillThroughEventArgs al delegado DrillThroughEventHandler, que se encarga de controlar el evento.

Si el informe detallado tiene subinformes, deberá suministrar datos para esos subinformes.A tal efecto, proporcione un controlador de eventos SubreportProcessing al informe detallado que se pasa mediante el objeto DrillthroughEventArgs.

A fin de cargar datos para el informe detallado, se debe llamar al método DataSources.Add del informe detallado que se pasa mediante el objeto DrillThroughEventArgs en lugar del objeto LocalReport utilizado por el control ReportViewer.

El nombre del origen de datos agregado al método del controlador de eventos de obtención de detalles debe coincidir con el nombre del origen de datos especificado en el informe detallado.El nombre de este origen de datos se puede ver en el Diseñador de informes haciendo clic en el menú Informe y seleccionado Orígenes de datos.A continuación se abre el cuadro de diálogo Orígenes de datos de informe que muestra los nombres de los orígenes de datos de informe definidos en el informe.

Para obtener más información sobre el control de eventos, vea Utilizar eventos.

Ejemplos

El siguiente código muestra carga un informe de ejemplo que contiene una serie de elementos de obtención de detalles y configura un controlador de eventos para controlar los eventos de obtención de detalles.Los argumentos pasados al controlador de eventos de obtención de detalles incluyen un objeto de informe detallado.El controlador de eventos agrega un origen de datos a este informe antes de que el informe detallado se presente en el control 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;
    }
}

En el siguiente ejemplo de Visual Basic se presupone que ha creado una aplicación Windows con un formulario y un control 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

Vea también

Referencia

ReportViewer Clase

Microsoft.Reporting.WinForms (Espacio de nombres)