骨科医院网站优化服务商,深圳深圳网站建设公司,四川建设网电话,湖南网络推广服务之前 OEA 一直用着一个 Delphi 开发的报表#xff0c;所以两年来我一直就想在 OEA 中构建一个纯 .NET 的报表模块#xff0c;但是一想到要开发复杂的报表引擎和设计器就觉得麻烦。所以这事一直拖着。最近开始研究一些成熟的报表引擎#xff0c;经过对比#xff0c;还是发现…之前 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 : EntityConfigOrderStorageInBill
{protected override void ConfigView(){View.UseReport(采购入库单报表统计.rdlc); 再次打开界面我们会发现该页签对应的界面块已经变成了一个报表界面并同时带上了报表界面的两个重要功能“刷新 RDLC 字段”及“报表数据”。 到此所有的代码已经完成接下来的过程也不再需要关闭程序或者重新编译。 第三步可以开始设计报表了。 注意到由于到现在还没有建立并设计 RDLC 报表文件所以上图中的报表显示控件所有按钮都是不可用的。点击“刷新 RDLC 字段”按钮弹出以下界面 点击确定后框架自动生成相关的 RDLC 文件到指定目录该目录可在配置文件中进行配置刷新报表显示控件并弹出如下提示 点击确定可把该路径拷贝到剪贴板中。 注意到此时报表控件的按钮已经可用说明相应的 RDLC 文件已经生成 所以我们需要使用设计器对其进行设计由于目前还没有开发单独的 RDLC 设计器所以暂时用 VS2012 进行设计。在 VS 中直接打开该文件路径已经在剪贴板中了VS 将启动对应的报表设计界面 框架在生成此文件时已经自动生成了相关的数据源节点本示例中只有一个简单的实体数据源更多的数据源可以使用代码设置而且这些字段的名称已经带上了界面显示的中文名称方便报表设计。 所以我们接下来只需要对这些数据进行报表设计即可如何设计 RDLC 报表的内容网上有较多内容这是我最后设计出来的报表 刚才说到在设计过程中是不需要关闭程序的在对 RDLC 文件进行任何修改并保存后可以点击报表控件上的刷新按钮即可直接预览当前效果。这是最终生成的报表界面 另外设计过程中也可以点击“报表数据”按钮查看当前报表背后显示的列表数据方便理解后台数据。 在以后的时间里我可能还需要想办法搞一个 RDLC 的设计器方便客户使用。这也是个麻烦事…… 不过集成报表这个心结有两年时间了现在总算是大致解决可以在 OEA 中比较快地开发报表了可喜可贺! 附RDLC 数据绑定类型定义图 补充没有安装 VS2012 的电脑需要安装 http://www.microsoft.com/en-us/download/details.aspx?id27230 ReportViewer 控件后才能查看报表直接拷贝 dll 到 Debug 目录下不行谁知道原因 转载于:https://www.cnblogs.com/zgynhqf/archive/2012/09/07/2675221.html