Поделиться через


Событие 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