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

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/chuangxin/article/details/4064462

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表部分内容如下:

  <table>

    <EmployeeID>1</EmployeeID>

    <FirstName>Terri</FirstName>

    <AddressID>1</AddressID>

    <ShiftID>1</ShiftID>

    <LastName>Duffy</LastName>

    <MiddleName>Lee</MiddleName>

    <NameStyle>false</NameStyle>

    <NationalIDNumber>245797967</NationalIDNumber>

    <Title>VP Engineering</Title>

    <HireDate>1998-03-03T00:00:00.0000000-08:00</HireDate>

    <BirthDate>1961-09-01T00:00:00.0000000-07:00</BirthDate>

    <LoginID>adventure-works/Terri</LoginID>

    <EmailAddress>Terri@adventure-works.com</EmailAddress>

    <DepartmentID>1</DepartmentID>

    <MaritalStatus>S</MaritalStatus>

    <EmergencyContactName>Tad Orman</EmergencyContactName>

    <EmergencyContactPhone>586-883-8338</EmergencyContactPhone>

    <SalariedFlag>true</SalariedFlag>

    <Gender>F</Gender>

    <ManagerID>300</ManagerID>

    <PayFrequency>2</PayFrequency>

    <BaseRate>63.4615</BaseRate>

    <VacationHours>1</VacationHours>

    <SickLeaveHours>20</SickLeaveHours>

    <SalesPersonFlag>false</SalesPersonFlag>

    <CurrentFlag>true</CurrentFlag>

    <ModifiedDate>2003-01-15T19:26:13.9000000-08:00</ModifiedDate>

    <rowguid>1b76e019-0d60-4d48-b405-c9144fb9b3ab</rowguid>

  </table>

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

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

6_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")));

     }

6_2

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

6_3

 

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

展开阅读全文

没有更多推荐了,返回首页