RDLC使用手册_RDLC钻取功能实现

Demo在主报表会显示一个部门列表(部门ID、部门名称等),然后通过钻取功能可实现特定部门的员工信息展示,下述为具体操作步骤。

1)    准备好两个数据源,本文为2xml文件(departments.xmlEmployees.xml),这两个文件放在项目的Data文件夹下,特别注意的是这两个文件的【复制到输出目录】属性要选择“始终复制”,负责工程编译的时候不会将这两个文件生成到bin目录下。

2)    新建报表,命名为“drillthrough.rdlc”;新建一个数据集,命名为“departments”,在该数据集中添加一个Datatable,表结构如下:

DepartmentID               Int32

Name                           String

GroupName                  String

ModifiedDate                DateTime

rowguid                       String

3)    drillthrough.rdlc设计器中,拖入一个文本框和一个Table控件。文本框显示内容为“Drill Through Demo”,在Table控件中拖入DepartmentIDName两列。

4)    添加Name列的导航、钻取功能。右击Name文本框,选择【属性】,选择【导航】Tab页,在“超级链接”处选择“跳至报表”(该报表为显示钻取实现的目标报表,假设为drillthroughDetail.rdlc,且已经存在,因此在实践时,可以再本操作之前,先创建一个drillthroughDetail.rdlc报表),设置“跳至报表”为drillthroughDetail,点击【参数】按钮,会弹出参数设置对话框。在对话框中,添加一个参数,名称为DepartmentID,值为=Fields!DepartmentID.Value

5)    设计drillthroughDetail.rdlc报表,先新建一个该报表对应的数据集,名称为employees,添加一个DataTable,名称为employeeemployee表部分内容如下:

 

    1

    Terri

    1

    1

    Duffy

    Lee

    false

    245797967

    VP Engineering

    1998-03-03T00:00:00.0000000-08:00

    1961-09-01T00:00:00.0000000-07:00

    adventure-works/Terri

    [email protected]

    1

    S

    Tad Orman

    586-883-8338

    true

    F

    300

    2

    63.4615

    1

    20

    false

    true

    2003-01-15T19:26:13.9000000-08:00

    1b76e019-0d60-4d48-b405-c9144fb9b3ab

 

        从表的内容中,我们可以大致判断出其结构是什么样的啦。

6)    拖入一个文本框控件和表格控件到drillthroughDetail.rdlc报表设计器中,并从employees数据集中拖入相应字段到表格控件中,设置完毕之后,效果如下图所示。

RDLC使用手册_RDLC钻取功能实现_第1张图片

7)    设置drillthroughDetail.rdlc报表的参数:参数名称为DepartmentID,类型为Integer

8)    设置drillthroughDetail.rdlc报表表格控件的筛选器,表达式为=CInt(Fields!DepartmentID.Value),运算符为=,值为=Parameters!DepartmentID.Value

9)    新建一个窗体FrmDrillThrough,添加一个ReportViewer控件,在代码编辑窗口,添加下述代码:

        private void FrmDrillThrough_Load(object sender, EventArgs e)

        {

            reportViewer1.ProcessingMode = ProcessingMode.Local;

            reportViewer1.LocalReport.ReportPath = @"Rdlc/drillthrough.rdlc";

            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("departments_department", LoadData(@"Data/departments.xml")));

            reportViewer1.RefreshReport();

        }

 

        //读取XML数据

        private DataTable LoadData(string xmlFilePath)

        {

            DataSet dataSet = new DataSet();

            dataSet.ReadXml(xmlFilePath);

            return dataSet.Tables[0];

        }

 

        private void reportViewer1_Drillthrough(object sender, DrillthroughEventArgs e)

        {

            LocalReport localReport = (LocalReport)e.Report;

            localReport.DataSources.Add(new ReportDataSource("employees_employee", LoadData(@"Data/Employees.xml")));

     }

RDLC使用手册_RDLC钻取功能实现_第2张图片

鼠标移到Name一列,会变成手的形状,如单击Engineering,就会钻取取来Engineering部门的员工信息,如下图所示。

RDLC使用手册_RDLC钻取功能实现_第3张图片

 

    因为不知道如何在博文中上传附件,相关资料已经上传到CSDN,大家可以搜索“RDLC使用手册”下载。

你可能感兴趣的:(RDLC使用手册_RDLC钻取功能实现)