Событие ReportViewer.Drillthrough
Происходит при выборе в отчете элемента детализации отчета.
Пространство имен: Microsoft.Reporting.WinForms
Сборка: Microsoft.ReportViewer.WinForms (в microsoft.reportviewer.winforms.dll)
Синтаксис
'Декларация
'Применение
Замечания
Событие происходит при выборе в отчете элемента детализации отчета. Сведения об этом событии передаются в объекте DrillThroughEventArgs делегату DrillThroughEventHandler, который обрабатывает событие.
Если детализированный отчет содержит вложенные отчеты, необходимо предоставить данные для вложенных отчетов. Для этого предоставьте обработчик события SubreportProcessing детализированному отчету, передаваемому через объект DrillthroughEventArgs.
Чтобы загрузить данные для детализированного отчета, необходимо вызвать метод DataSources.Add детализированного отчета, передаваемого через объект DrillThroughEventArgs, а не объект LocalReport, используемый элементом управления ReportViewer.
Имя источника данных, добавляемого в метод обработчика события детализации, должно соответствовать имени источника данных, указанного в детализированном отчете. Имя этого источника данных можно просмотреть в конструкторе отчетов, выбрав в меню Отчет пункт Источники данных. При этом откроется диалоговое окно Источники данных для отчета, в котором отображаются имена источников данных отчета, определенные в отчете.
Дополнительные сведения об обработке событий см. в разделе Прием событий.
Примеры
Следующий образец кода загружает образец отчета, содержащий ряд детализированных элементов, и настраивает обработчик события детализации для обработки событий детализации. В аргументы, передаваемые обработчику событий детализации, входит объект детализированного отчета. Обработчик события добавляет в этот отчет источник данных перед подготовкой к просмотру детализированного отчета в элементе управления 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;
}
}
В следующем образце кода на Visual Basic предполагается, что создано приложение Windows с формой и элементом управления 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
См. также
Справочник
Класс ReportViewer
Члены ReportViewer
Пространство имен Microsoft.Reporting.WinForms