15
8月
2020

XtraReports添加参数和过滤数据

让我们继续DevExpress中XtraReports创建薪资报告应用程序的实践,这一期我们将学习添加参数和过滤数据,本文假定你已看过我以下的视频教程:

Part1-使用DevExpress的XtraReports控件创建员工薪资报告应用程序

Part2-XtraReports创建计算字段和自定义报告外观

注意:源码已整合Part1、Part2和Part3项目,要遵循本文中的操作步骤,请从“SalaryReports-Step02”项目的基础上进行修改,要将“SalaryReports-Step02”项目设置为解决方案中的启动项目,请在Visual Studio解决方案资源管理器中右键单击该项目,然后选择“设为启动项目” 选项。

在本文中,我们将实现通过输入参数过滤报表数据的功能,可参考我的B站视频教程——Part3-XtraReports添加参数和过滤数据

步骤1.添加报告参数

1)让我们创建第一个输入参数–要为其显示员工薪资报告中员工的姓名:

在我们的数据库中,建立一个单独的表包含员工的个人信息,该表具有一个EmployeeName列,我们可以用此列填充输入参数值集合。有必要在我们的报表数据模型中将Employees表添加到数据集中,打开我们之前添加到Data文件夹中的EmployeesDBDataSet.xsd文件,以显示数据集设计器,打开Visual Studio Server Explorer,选择EmployeesDB.mdb并将Employees表从Tables部分拖到数据集设计器界面中,如图1-1所示:

guide1

图1-1-添加Employees表到数据集中(点击图片可放大)

这样做后,“ Field List”窗口中将提供员工个人信息字段,如图1-2所示:

guide2

图1-2-Filed List中显示Employees信息(点击图片可放大)

2)在设计时将参数添加到报表中,在“ Field List”窗口中右键单击“ Parameters”项以调用其上下文菜单,选择“Add Parameter…”,然后,在调用的添加新参数对话框中,添加一个“paramEmpName”参数,设置输入参数名称、描述、类型和默认值,如图1-3所示:

guide3

图1-3-添加paramEmpName参数(点击图片可放大)

 

3)我们应允许最终用户选择特定的年份和月份,为此我们需要添加paramYear和paramMonth两个整数参数,属性设置分别如图1-4和1-5所示:

guide5

图1-4-设置paramYear属性(点击图片可放大)

guide6

图1-5-设置paramMonth属性(点击图片可放大)

此时,最终用户可以输入年和月参数,因为我们数据库中的PaymentDate字段是单个DateTime字段,所以我们无法通过 paramMonth和 paramYear整数参数直接过滤PaymentDate的报告数据。我们可以添加一个内部使用的参数,该参数从 paramYear和 paramMonth参数构造一个 DateTime值。添加一个名为 paramPaymentDate的新报表参数,并将其 Type设置为 Date,由于此参数在内部使用,因此无需在参数面板中显示它,取消勾选“Show in the parameters panel”项,如图1-6所示:

guide7

图1-6-设置paramPaymentDate属性(点击图片可放大)

4) 给参数面板中的“Submit”按钮添加按钮点击事件,单击“Submit”按钮时将引发XtraReport.ParametersRequestSubmit事件从而允许自定义参数值,选择报表右键选择“Properties”项打开属性栏,点击“Events”按钮(闪电LOGO),找到“ParametersRequestSubmit”项,在右侧空白处双击自动生成按钮点击事件,如图1-7所示:

guide8

图1-7-添加XtraReport.ParametersRequestSubmit事件(点击图片可放大)

5)将必需的参数传递给报告后,有必要使用年、月值构造一个过滤器字符串,在EmployeeReport_ParametersRequestSubmit()函数中添加如下代码:

private void EmployeeReport_ParametersRequestSubmit(object sender, DevExpress.XtraReports.Parameters.ParametersRequestEventArgs e)
      {
          EmployeeReport report = sender as EmployeeReport;//实例化report
          int year = Convert.ToInt32(report.Parameters["paramYear"].Value);//paramYear转换成整数
          int month = Convert.ToInt32(report.Parameters["paramMonth"].Value);//paramMonth转换成整数
          report.Parameters["paramPaymentDate"].Value = new DateTime(year, month, 1);//paramPaymentDate实例化为DateTime显示年、月、日
      }

步骤2.构建过滤器字符串

1)要构建报告数据过滤器字符串,请调用报告智能标记,然后单击XtraReport.FilterString属性右侧的省略号以打开FilterString编辑器,如图2-1所示:

guide9

图2-1-打开FilterString编辑器(点击图片可放大)

2)添加EmployeeName过滤器条件,单击加号图标以构造EmployeeName数据字段和Contains运算符的条件,由于最终用户可能不知道员工的全名,因此我们在此处使用Contains运算符代替Equals,单击准则右边的铅笔图标两次以显示一个问号,访问参数列表并设置paramEmpName参数名称,如图2-2所示:

guide10

图2-2-添加EmployeeName过滤器条件(点击图片可放大)

3)单击加号图标在过滤器字符串上指定其他条件,该FilterString编辑器加入与标准AND运算符,让我们添加一个条件来检查PaymentDate字段值是否等于paramPaymentDate参数值(使用Equals运算符),如图2-3所示:

guide11

图2-3-添加PaymentDate过滤器条件(点击图片可放大)

4)编译运行,我们可以通过输入名字、年和月然后单击“ Submit”按钮以按设定的参数值过滤报告信息,如图2-4所示:

 guide13

图2-4-报表过滤数据效果(点击图片可放大)

总结:

在本文中,我们添加了报表参数并使用它们来过滤报表数据,实现快速定位信息的功能。

即将到来的文章:
使用DevExpress的XtraReports控件创建薪资报告应用程序。Part4-创建管理报告并将其绑定到数据(主从细节)。


原文链接:https://www.daboke.com/devexpress/xtrareportsapp3.html

B站up主-编程自修室:https://space.bilibili.com/580719958

源码下载:https://pan.baidu.com/s/1T0gDl1ZpX1Ze61YFaUH2SA  提取码:yuwu

You may also like...

发表评论

邮箱地址不会被公开。

微信 OR 支付宝 扫描二维码
为本文作者 打个赏
pay_weixin pay_weixin
最喜欢你一言不合就打赏的样子了^_^