OEA 框架中集成的 RDLC 报表介绍

简介:

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

 

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

 

报表开发示例


 

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

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

image

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

image

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

image

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

 

 

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

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

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

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

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

image

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

 

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

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

image

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

image

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

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

image

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

image

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

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

image

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

image

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

 


 

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

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

 

 

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

image


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

相关文章
|
9天前
|
算法 API Apache
Flink CDC:新一代实时数据集成框架
本文源自阿里云实时计算团队 Apache Flink Committer 任庆盛在 Apache Asia CommunityOverCode 2024 的分享,涵盖 Flink CDC 的概念、版本历程、内部实现及社区未来规划。Flink CDC 是一种基于数据库日志的 CDC 技术实现的数据集成框架,能高效完成全量和增量数据的实时同步。自 2020 年以来,Flink CDC 经过多次迭代,已成为功能强大的实时数据集成工具,支持多种数据库和数据湖仓系统。未来将进一步扩展生态并提升稳定性。
257 1
Flink CDC:新一代实时数据集成框架
|
2月前
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
37 1
|
2月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
39 0
|
2月前
|
测试技术 持续交付 开发者
Xamarin 高效移动应用测试最佳实践大揭秘,从框架选择到持续集成,让你的应用质量无敌!
【8月更文挑战第31天】竞争激烈的移动应用市场,Xamarin 作为一款优秀的跨平台开发工具,提供了包括单元测试、集成测试及 UI 测试在内的全面测试方案。借助 Xamarin.UITest 框架,开发者能便捷地用 C# 编写测试案例,如登录功能测试;通过 Xamarin 模拟框架,则可在无需真实设备的情况下模拟各种环境测试应用表现;Xamarin.TestCloud 则支持在真实设备上执行自动化测试,确保应用兼容性。结合持续集成与部署策略,进一步提升测试效率与应用质量。掌握 Xamarin 的测试最佳实践,对确保应用稳定性和优化用户体验至关重要。
46 0
|
2月前
|
数据库 Java 数据库连接
Struts 2 与 Hibernate 的完美邂逅:如何无缝集成两大框架,轻松玩转高效 CRUD 操作?
【8月更文挑战第31天】本文通过具体示例介绍了如何在 Struts 2 中整合 Hibernate,实现基本的 CRUD 操作。首先创建 Maven 项目并添加相关依赖,接着配置 Hibernate 并定义实体类及其映射文件。然后创建 DAO 接口及实现类处理数据库操作,再通过 Struts 2 的 Action 类处理用户请求。最后配置 `struts.xml` 文件并创建 JSP 页面展示用户列表及编辑表单。此示例展示了如何配置和使用这两个框架,使代码更加模块化和可维护。
41 0
|
2月前
|
Java 数据库连接 数据库
强强联手!JSF 与 Hibernate 打造高效数据访问层,让你的应用如虎添翼,性能飙升!
【8月更文挑战第31天】本文通过具体示例详细介绍了如何在 JavaServer Faces (JSF) 应用程序中集成 Hibernate,实现数据访问层的最佳实践。首先,创建一个 JSF 项目并在 Eclipse 中配置支持 JSF 的服务器版本。接着,添加 JSF 和 Hibernate 依赖,并配置数据库连接池和 Hibernate 配置文件。然后,定义实体类 `User` 和 DAO 类 `UserDAO` 处理数据库操作。
51 0
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
NumPy 与机器学习框架的集成
【8月更文第30天】NumPy 是 Python 中用于科学计算的核心库之一,它提供了高效的多维数组对象,以及用于操作数组的大量函数。NumPy 的高效性和灵活性使其成为许多机器学习框架的基础。本文将探讨 NumPy 如何与 TensorFlow 和 PyTorch 等流行机器学习框架协同工作,并通过具体的代码示例来展示它们之间的交互。
22 0
|
3月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
191 6
|
3月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
217 4
|
3月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
175 1
下一篇
无影云桌面