DevExpress XtraReport控件 VS 微软RDLC 表,谁更胜一筹?

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、 表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。

我们开发程序的时候,经常会碰到一些 表,如果是Winform的 表,一般可以采用DevExpress控件组的XtraReport,或者微软的RDLC 表,当然还有一些其他的,在此不再赘述。由于本人在Winform开发中经常使用到一些 表,有时候使用XtraReport 表,有时候也使用RDLC 表,因此本篇主要介绍这两种不同类型 表的使用,以及对比它们的差异性,以便我们更好的掌握了解。

一、XtraReport 表的使用

1. 表界面展示

在我的派车管理系统里面,我需要根据数据库的记录,把相关的派车历史信息做成一个 表统计的模块,需要列出 表的明细(派车明细)和统计值(记录数、公里数),这种类型的 表是很多情况下需要碰到的。

我需要实现一个基于XtraReport 表技术实现的功能界面,如下面图示所示。

WinForm界面开发教程

这里面涉及的字段,包括字符型、日期型,数值型、枚举类型等,还有统计值、打印时间(参数),因此也算一个比较完整的 表展示了。

2. 创建新 表

为了实现这个 表模块,我们先使用VS的工具创建一个 表组件对象。

WinForm界面开发教程

在使用前,我们需要设置好 表组件的各个显示模块, 表 表上下空间部分(TopMargin/BottomMargin),这两个部分用来调整上下的边线的;

然后每个 表有头部内容和底部内容的区分,ReportHeader一般用来放置表格头部字段显示的,明细的内容包括展示列表的明细信息,大致调整如下所示。

WinForm界面开发教程 WinForm界面开发教程

3. 设计 表控件和数据源管理

在VS左边的工具箱里面有响应的XtraReport控件,拖动到 表界面里面就可以进行绘制设计了。

WinForm界面开发教程

为了实现表格统计和展示,我们需要拖动两个表格到 表界面里面去,一个是 表头字段,一个用来显示 表明细的列表内容,两个单元格的宽度设置一致,并且上下空间要挨着,否则显示出来就有空间,不好看。

表格拖动过去后,可以使用右键添加相应的单元格,然后统一设置他们的背景颜色,高度宽度,边框等属性即可。

表格头我们可以填写相关的文字替代,但是 表的明细信息,我们需要绑定相应的字段内容,因此需要增加一个数据源用来绑定到 表上去。

在 表属性里面,找到DataSource进行配置,如下所示。

WinForm界面开发教程

拖动相关的表格,然后设计其界面,并绑定明细单元格的内容为[ABC]这样的格式,就标识绑定了一个ABC的字段属性了。如下所示是绑定了一个HandNo的字段显示。

WinForm界面开发教程

最终设计的 表界面如下所示。

WinForm界面开发教程

4. 特殊字段的处理

在 表的设计过程中,我们一般会碰到各种不同的字段,它不是简单的文本信息,可能是日期,也可以是统计值,计算值等。

WinForm界面开发教程

打印时间,只需要增加一个XRPageInfo,然后设置里面的值就可以了,这个有点类似RDLC的参数值。

WinForm界面开发教程

从上面我们可以看到有很多项目可以选的,除了有时间,还有记录数、总记录数、用户名、总数等等。

记录数的统计设计如下所示,主要是通过千制的方式显示,调用Count函数处理。

WinForm界面开发教程

同样,总公里数,是统计整个 表里面记录的公里数操作,调用SUM函数处理,它的设计界面如下。

WinForm界面开发教程

设计好Xtra 表后,我们就可以程序里面,直接调用进行加载处理即可,代码如下所示。

private void PrintReport(){string where = GetConditionSql();List<CarApplyInfo> list = BLLFactory<CarApply>.Instance.Find(where);FrmHistoryReport report = new FrmHistoryReport();report.DataSource = list;ReportPrintTool tool = new ReportPrintTool(report);tool.ShowPreview();}

我们主要获取数据源,并绑定数据源到对应的 表组件上,然后调用ReportPrintTool 进行展现即可,代码非常简洁,只是设计过程麻烦一些。

二、RDLC 表的使用

在《会员管理系统的设计和开发(2)– RDLC 表的设计及动态加载》里面,有对RDLC 表设计做了一些介绍,RDLC是微软的 表格式,它是一个相对比较独立的文件,是一个基于XML描述性的文件,除了可以用在Winform上外,也可以用在Web上,通用性也非常不错。

基于对比的考虑,我也为同样的模块设计了一个一样的 表,RDLC 表最终展示界面如下所示。

WinForm界面开发教程

和前面XtraReport的 表界面做一个对比。

WinForm界面开发教程

两者的展现效果都差不多,只是界面效果有一些差异而已。

WinForm界面开发教程

1. RDLC的设计效果

由于RDLC它是一个独立的XML文件,它的描述全部在一个XML里面,因此我们设计的时候,只是对XML文件进行处理,VS给我们提供了一个设计器及进行设计而已。

在RDLC的设计视图里面,我们可以看到 表数据里面,包括一些预定义的数据,以及我们添加进去的数据源。

WinForm界面开发教程

当然 表设计少不了相关的控件,因此在工具栏里面,可以看到可以用的 表控件元素,如下所示。

WinForm界面开发教程

二、 表特殊元素的处理

RDLC 表,也有一些如打印时间,分页数据等,是需要特殊的处理了,打印时间是使用 表数据里面的【内置字段】项目,如下所示。

WinForm界面开发教程

对于记录总数和统计值,我们可以通过自定义的格式内容进行处理,如下所示。

WinForm界面开发教程

统计总数的操作设计如下,调用SUM函数即可,如果忘记是那个,可以在下面类别里面进行查询,里面有很多运算符、常见函数等内容可以使用。

WinForm界面开发教程

另外,对于一些特殊的显示格式,我们需要正确设置,如下是日期的格式设置。

WinForm界面开发教程

3. 表的调用处理

由于 表的展现模块,我已经放到了一个独立的通用模块里面,因此对于 表的加载,只需要简单的设置属性,然后调用即可,如下所示。

private void PrintRDLCReport(){string where = GetConditionSql();List<CarApplyInfo> list = BLLFactory<CarApply>.Instance.Find(where);foreach (CarApplyInfo info in list){info.Data1 = info.Status.ToString();//转换枚举类型描述}ReportViewerDialog dlg = new ReportViewerDialog();dlg.Text = "历史记录 表";dlg.DataSourceDict.Add("CarApplyInfo", list);dlg.ReportName = "WHC.CarDispatch.HistoryReport";dlg.IsPrintLayout = true;dlg.ShowDialog();}

上面主要也是构建数据源,指定 表路径和布局,然后绑定 表展示模块窗口即可。

下面附上几个系统功能截图,供参考学习。

1)主界面列表,基于GridControl的展示,并增加统计栏目。

WinForm界面开发教程

2)历史记录 表展示(XtraReport 表)

WinForm界面开发教程

3)两种不同格式的派车单 表展示(RDLC 表)。

WinForm界面开发教程 WinForm界面开发教程
三、XtraReport 表和RDLC 的差异

这两者的 表都能实现相似的效果,不过XtraReport是把它集成到DLL里面,类似编译的窗体文件一样了;而RDLC 表本身是一个独立的文件,我们发布的时候,要把它带上,但是又有较好的通用性。

对于XtraReport的字段内容展示,默认就是调用了ToString()的函数处理,因此类似日期、枚举类型,都不需要怎么样设置,就可以正常显示,但是RDLC 表设计里面,我们需要为每种字段设置好对应的格式,枚举类型好像解析还是会转换为整形,因此需要在数据源级别进行转换,否则显示不出来。

对于自定义函数方面,XtraReport提供了较好的设计界面,能够很大程度减少出错的机会;RDLC则提供了弹性化的操作,提供了很多函数进行参考,需要自己添加表达式,不过在编译的时候,能够检查出现的错误。

如果需要动态配置、加载或者开发一些新的 表展示,可能相对来说,RDLC更方便,可以增量发布一些 表,然后在后台配置即可展示,不需要改动源码编译。


DevExpress技术交流群3:700924826      欢迎一起进群讨论

高端UI界面开发
标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月1日
下一篇 2021年3月1日

相关推荐

发表回复

登录后才能评论