Partilhar via


Evento ReportViewer.Drillthrough

Ocorre quando um item de detalhamento é selecionado em um relatório.

Namespace:  Microsoft.Reporting.WinForms
Assembly:  Microsoft.ReportViewer.WinForms (em Microsoft.ReportViewer.WinForms.dll)

Sintaxe

'Declaração
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 não oferece suporte a eventos.

Comentários

Esse evento ocorre quando um item de detalhamento é selecionado em um relatório.As informações sobre esse evento são passadas em um objeto DrillThroughEventArgs para o representante de DrillThroughEventHandler, que trata o evento.

Se o relatório de detalhamento tiver sub-relatórios, você deverá fornecer dados para esses sub-relatórios.Para fazer isso, forneça um manipulador de eventos do SubreportProcessing para o relatório de detalhamento que é passado pelo objeto DrillthroughEventArgs.

Para carregar dados para o relatório de detalhamento, você deverá chamar o método DataSources.Add do relatório de detalhamento que é passado pelo objeto DrillThroughEventArgs, em vez do objeto LocalReport usado pelo controle ReportViewer.

O nome da fonte de dados adicionada no método do manipulador de eventos de detalhamento deve corresponder ao nome da fonte de dados que foi especificado no relatório de detalhamento.O nome dessa fonte de dados pode ser exibido no Designer de Relatórios clicando no menu Relatório e selecionando Fontes de Dados.Isso abre a caixa de diálogo Fontes de Dados de Relatório que exibe os nomes das fontes de dados de relatório definidas no relatório.

Para obter mais informações sobre o tratamento de eventos, consulte Consumindo eventos.

Exemplos

O código de exemplo a seguir carrega um relatório de exemplo que contém uma série de itens de detalhamento e configura um manipulador de eventos para tratar os eventos de detalhamento.Os argumentos passados para o manipulador de eventos de detalhamento incluem um objeto do relatório de detalhamento.O manipulador de eventos adiciona uma fonte de dados a esse relatório antes que o relatório de detalhamento seja renderizado no controle 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;
    }
}

O exemplo do Visual Basic a seguir presume que você tenha criado um aplicativo do Windows com um formulário e um controle 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

Consulte também

Referência

ReportViewer Classe

Namespace Microsoft.Reporting.WinForms