12
7月
2020

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

DevExpress的XtraReports是为 .NET 创建的完全集成、功能强大并且灵活的报表系统,XtraReports 中的每个报表都可以被绑定到数据或者不绑定, 要创建绑定报表,则首先要把报表绑定到数据源,然后指定每个报表控件的数据绑定选项,我今天和大家分享一个实例演示如何将数据源绑定到自定义的XtraReports中并预览效果。

操作指导:

步骤1.创建一个新的Windows窗体应用程序

首先我们创建一个Windows窗体应用程序,并将其命名为salaryReports,目标框架选择.NET Framework 4.7.2,如图1所示;

guide1

图1-创建Windows窗体应用(点击图片可放大)

在解决方案资源管理器中中右键单击项目名称,然后选择”添加->新文件夹”项,将新文件夹命名为Data”,如图2所示:

guide2

图2-项目中添加Data文件夹(点击图片可放大)

重复这些操作添加Report文件夹,如图3所示:

guide3

图3-项目中添加Reports文件夹(点击图片可放大)

步骤2.添加数据源

添加一个数据集的应用程序,右键单击我们的Data 文件夹,然后选择添加-> 现有项…”。这将调用“打开文件”对话框。在此对话框中,找到实例根目录中的EmployeesDB.mdb文件(要想看到此文件,请将文件过滤器设置为“All Files(*.*)”噢~),如图4所示:

guide4

图4-向Data文件夹中添加access数据库(点击图片可放大)

添加数据库文件后,在Visual Studio的工具栏输入”data sources”,选择匹配到的“Data Sources”项,如图5所示:

guide5

图5-添加Data Sources(点击图片可放大)

选中后,左侧栏自动弹出Data Source工具栏,点击“添加新的数据源”项调用“数据源配置向导”,如图6所示:

guide6

图6-添加新的数据源(点击图片可放大)

在“数据源配置向导”中,选择“DataBase”,点击“下一步”,如图7所示:

guide7

图7-选择数据库(点击图片可放大)

选择“DataSet”,点击“下一步”,如图8所示:

guide8

图8-选择数据集(点击图片可放大)

选择”EmployeesDB.mdb”文件,点击“下一步”,如图9所示:

guide9

图9-选择“EmployeesDB.mdb”文件(点击图片可放大)

设置连接名为“EmployeesDBConnectionString”,点击“下一步”,如图10所示:

guide10

图10-设置连接名(点击图片可放大)

选择数据集目标,这里只选择“Views”中的“Full Emp Data Query”项,设置数据集名称为“EmployeesDBDataSet”,点击“完成”,如图11所示:

guide11

图11-添加数据集对象(点击图片可放大)

添加成功后,可以看到项目中已自动添加了EmployeesDBDataSet.xsd项,如图12所示:

guide12

图12-数据集创建成功(点击图片可放大)

步骤3.创建Report

右键单击解决方案资源管理器中的“Reports”文件夹,然后将鼠标悬停在“ Add DevExpress Item”菜单项上以显示该子菜单,然后从子菜单中选择“ Report” ,如图13所示:

guide13

图13-在Reports文件夹中添加Report(点击图片可放大)

在项目名对话框中输入”EmployeeReport.cs”,点击“OK”,将新的空白报告添加到应用程序,如图14所示:

guide14

图14-设置项目名为”EmplyeesReport”(点击图片可放大)

选择“空”,点击“完成”,如图15所示:

guide15

图15-添加空白Report(点击图片可放大)

步骤4.将Report绑定到数据库

单击XtraReport左上角箭头LOGO显示智能标记面板,然后单击DataSource属性下拉列表,选择“EmployeesDBDataSet”数据集来绑定Report,选择DataSource时,将自动填充DataMember和DataAdapter属性,这样就成功将Report绑定到数据库了,如图16所示:

guide16

图16-Report绑定数据源(点击图片可放大)

步骤5.自定义Reprot的布局

Report布局由带和控件组成,将Report添加到项目后,默认情况下可以使用三个Report带:TopMargin,Detail和BottomMargin。

将页眉添加到报表中需要添加PageHeaderBand,打开Visual Studio工具栏中的”XtraReports”资源管理器,如图17所示:

guide17

图17-打开报表资源管理器(点击图片可放大)

右键选择报表资源管理器中的”EmployeeReport”,选择”Insert Band”项,选择“PageHeader”项将PageHeaderBand添加到Report中,如图18所示:

guide18

图18-添加”PageHeaderBand”到Report中(点击图片可放大)

添加Report Control中的XRLabel,XRLine和XRPageInfo控件到PageHeaderBand中,如图19所示:

guide19

图19-添加XRLabel、XRLine和XRPageInfo控件(点击图片可放大)

调整PageHeaderBand的高度并调整页面标题布局的控件大小,如图20所示:

guide20

图20-调整PageHeaderBand中控件的布局(点击图片可放大)

双击xrLabel1,然后为Report标题改成员工薪资报告”,如图21所示:

guide21

图21-修改XRLabel1的Text名为“员工薪资报告”(点击图片可放大)

点击XRLine1控件,从属性窗口中设置线宽属性为2,如图22所示:

guide22

图22-修改XRLine的宽度为2(点击图片可放大)

点击XRPageInfo,从属性窗口中设置“Page Infomation”为“DataTime” ,在”Text Format String”中键入“{0:yyyy年MMMd日}”,或选择任意一个标准时间格式,如图23所示:

guide23

图23-修改XRPageInfo显示格式为DataTime(点击图片可放大)

步骤6.将控件添加到DetailBand

添加两个XRLabel和两个XRTabel控件到Detial区域中,删除xrTableCell3单元和xrTableCell6单元,拉伸这些表以匹配页面宽度并调整单元格的大小,使每个表占据页面宽度的一半,如图24所示:

 guide24

图24-添加XRTaBel到Detail栏中(点击图片可放大)

为了避免在单个页面上显示来自不同记录的不相关数据,我们可以使用PageBreak属性可强制每页显示一个详细信息。打开Detail Band智能标记,然后从PageBreak下拉列表中选择“ AfterBand”,如图25所示:

guide25

图25-设置Detail栏的PageBreak属性为AfterBand(点击图片可放大)

右键单击XRTable控件,然后选择“插入->下方的行”,在现有的下方添加一行,对于以下详细信息区域布局,第一张表添加三行,第二张表添加两行,如图26所示:

步骤7.将Report控件绑定到数据

从Visual Studio的工具栏中打开XtraReports菜单,然后打开“ Field List”,通过打开控件智能标记并从“ 数据绑定”下拉列表中选择一个数据字段拖动到对应的Report控件中进行绑定,如图27所示:

guide26

图26-Report控件绑定字段信息(点击图片可放大)

步骤8.主界面添加Button打开报表

打开Form1设计器,拖放一个SimpleButton控件到主界面中,如图27所示:

guide27

图27-主界面添加SimpleButton控件(点击图片可放大)

并在按钮点击事件中添加以下代码:

private void simpleButton1_Click(object sender, EventArgs e)
      {            
          EmployeeReport empReport = new EmployeeReport();//使用EmployeeReport的实例
          ReportPrintTool printTool = new ReportPrintTool(empReport);//使用ReportPrintTool的实例生成Report预览
          printTool.ShowPreviewDialog();//打开Report界面
      }

步骤9.编译运行,查看Report预览效果,如图28所示:

guide28

图28-Report预览效果(点击图片可放大)

代码全文:

using System;
using System.Windows.Forms;
using DevExpress.XtraReports.UI;
using salaryReports.Reports;

namespace salaryReports
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {            
            EmployeeReport empReport = new EmployeeReport();//使用EmployeeReport的实例
            ReportPrintTool printTool = new ReportPrintTool(empReport);//使用ReportPrintTool的实例生成Report预览
            printTool.ShowPreviewDialog();//打开Report界面
        }

        private void simpleButton2_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("https://www.daboke.com");//欢迎访问大博客,阅读更多编程实战案例!
        }

        private void simpleButton3_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("https://www.daboke.com/devexpress/xtrareportsapp.html");//欢迎访问大博客,阅读更多编程实战案例!       
        }

        private void simpleButton4_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("https://space.bilibili.com/580719958");//欢迎访问我的B站频道-编程自修室,观看更多C#编程实战视频!
        }
    }
}

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

源码下载:https://pan.baidu.com/s/1mgPHn4ML0oUnxEaYgAm1XA  提取码:1e53

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

You may also like...

发表评论

邮箱地址不会被公开。

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