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