博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OEA 框架中集成的 RDLC 报表介绍
阅读量:6926 次
发布时间:2019-06-27

本文共 1940 字,大约阅读时间需要 6 分钟。

之前 OEA 一直用着一个 Delphi 开发的报表,所以两年来我一直就想在 OEA 中构建一个纯 .NET 的报表模块,但是一想到要开发复杂的报表引擎和设计器就觉得麻烦。所以这事一直拖着。最近开始研究一些成熟的报表引擎,经过对比,还是发现微软的 RLDC 报表已经能满足我大多数需求。其中包括表格、矩阵、图表 等复杂控件,同时同样的报表格式在 B/S 模式下也可以直接使用,最新的 Tablix 控件非常灵活,能实现大多数表格样式。所以我决定不再费时费力去造一个轮子,而是直接把微软的 RDLC 报表集成进来。最终集成到 OEA 中,只花了不到一周的时间。虽然现在还处在第一版,没有给客户使用的设计器。不过就目前的开发效率来看,开发人员开发一个报表,速度已经比较快了。

 

接下来,我就基于之前已经发布的进销存示例项目(JXC),来演示一下,基于 OEA 框架,是如何开发一个报表模块的。

 

报表开发示例


 

第一步,我们需要开发一个一般的列表模块。

这样,可以在使用报表前把后台数据相关的实体、数据层代码都开发完成,并检验数据是否正确。这一部分的内容与报表无关,我就直接使用 JXC 之前的单据查询模块中采购入库单界面:

把这个页签的代码拷贝成一个新的页签,

红线中代码是直接拷贝上一行并修改了显示名称,此时效果如下:

此时,就算已经完成了一个全新的列表查询结果界面的开发。那么,我们如何把这个传统的列表界面转换为报表显示界面呢?

 

 

第二步,在聚合块申明中,这个界面块申明为报表界面块,代码如下:

new SurrounderBlock(typeof(OrderStorageInBill), QueryObjectView.ResultSurrounderType){    KeyLabel = "采购入库单 - 报表",    BlockType = BlockType.Report},

然后为 OrderStorageInBill 类对应的这个视图配置中,申明需要使用的报表名称(该名称在系统所有报表名称中必须是唯一的)。如下:

internal class OrderStorageInBillConfig : EntityConfig
{ protected override void ConfigView() { View.UseReport("采购入库单报表统计.rdlc");

再次打开界面,我们会发现该页签对应的界面块,已经变成了一个报表界面,并同时带上了报表界面的两个重要功能:“刷新 RDLC 字段”及“报表数据”。

到此,所有的代码已经完成,接下来的过程也不再需要关闭程序或者重新编译。

 

第三步,可以开始设计报表了。

注意到,由于到现在还没有建立并设计 RDLC 报表文件,所以上图中的报表显示控件所有按钮都是不可用的。点击“刷新 RDLC 字段”按钮,弹出以下界面:

点击确定后,框架自动生成相关的 RDLC 文件到指定目录(该目录可在配置文件中进行配置),刷新报表显示控件,并弹出如下提示:

点击确定,可把该路径拷贝到剪贴板中。

注意到,此时报表控件的按钮已经可用,说明相应的 RDLC 文件已经生成:

所以我们需要使用设计器对其进行设计,由于目前还没有开发单独的 RDLC 设计器,所以暂时用 VS2012 进行设计。在 VS 中直接打开该文件(路径已经在剪贴板中了),VS 将启动对应的报表设计界面:

框架在生成此文件时,已经自动生成了相关的数据源节点(本示例中只有一个简单的实体数据源,更多的数据源可以使用代码设置),而且这些字段的名称已经带上了界面显示的中文名称,方便报表设计。

所以我们接下来只需要对这些数据进行报表设计即可,如何设计 RDLC 报表的内容,网上有较多内容,这是我最后设计出来的报表:

刚才说到在设计过程中是不需要关闭程序的,在对 RDLC 文件进行任何修改并保存后,可以点击报表控件上的刷新按钮,即可直接预览当前效果。这是最终生成的报表界面:

另外,设计过程中,也可以点击“报表数据”按钮查看当前报表背后显示的列表数据,方便理解后台数据。

 


 

在以后的时间里,我可能还需要想办法搞一个 RDLC 的设计器方便客户使用。这也是个麻烦事……

不过集成报表这个心结有两年时间了,现在总算是大致解决,可以在 OEA 中比较快地开发报表了,可喜可贺!  微笑

 

 

附:RDLC 数据绑定类型定义图

本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/archive/2012/09/07/2675221.html,如需转载请自行联系原作者

你可能感兴趣的文章
推荐几个我日常使用的IT在线测试工具
查看>>
回合制页游
查看>>
IIS 内部运行机制
查看>>
解决PL/SQL Developer连接数据库时出现 “ORA-12541:TNS:无监听程序”错误。
查看>>
关于完成端口IOCP异步接收连接函数AcceptEx注意事项 (转)
查看>>
Android 编程下两种方式注册广播的区别
查看>>
实现个hash_map容器类玩玩 - 苍梧 - 博客园
查看>>
Max Sum(经典DP)
查看>>
« 静态编译的MySQL易挂起 »
查看>>
关于 Oracle 索引以及 Bitmap 索引 和 B-tree 索引(归档)
查看>>
[zt]提问的艺术
查看>>
Global Cache CR Requested But Current Block Received
查看>>
How to use epoll? A complete example in C
查看>>
JScriptHelper类
查看>>
“万能数据库查询分析器”中英文4.02版本 2013-4-3日已在国内几大软件下载网站发布,敬请使用...
查看>>
memstr - Dustfly的专栏 - 博客频道 - CSDN.NET
查看>>
SSH无密码验证登录的实现(转摘)
查看>>
C# 修饰符的总结 default public private protected internal protectedinternal
查看>>
薛定谔之猫_百度百科
查看>>
jason数据格式详解
查看>>