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

 

补充:没有安装 VS2012 的电脑,需要安装 http://www.microsoft.com/en-us/download/details.aspx?id=27230
 ReportViewer 控件后才能查看报表,直接拷贝 dll 到 Debug 目录下不行,谁知道原因?

 

转载于:https://www.cnblogs.com/zgynhqf/archive/2012/09/07/2675221.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昆虫繁殖_“专为昆虫而生” –好奇!

昆虫繁殖重点 (Top highlight)The industry is changing towards a more agile approach and jacks of one trade can go extinct sooner than we think.该 行业正在发生变化 朝着更加灵活的方法和一个贸易的插Kong可以去灭绝快于我们的想法。 I’ve read a quote in a book r…

ECMAScript 2022 正式发布,有哪些新特性?

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。…

字母框如何影响UI内容的理解

What is your earliest memory of reading? Mine’s reading comics. I preferred films over books, I still do, but I seemed to have a fascination for comics. The experience of reading a comic, to me, was somewhere between watching a film and reading a novel, …

Vue2.7 本周发布?支持组合式 API、setup、css v-bind

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。…

linux中用户忘记root的密码--ubuntu版本

基于ubuntu操作系统的情况&#xff0c;当用户忘记root密码后&#xff0c; 在普通用户登陆后 输入sudu su root 之后系统要求输入当前用户的密码&#xff0c;用户输入密码后&#xff0c;就可以进入root的模式了 就可以操作任何任务。转载于:https://www.cnblogs.com/zhengyn/arc…

马上7月,诚邀新老朋友参加近5000人的源码共读活动!

大家好&#xff0c;我是若川。最近有不少新朋友关注我。诚邀各位新老读者朋友参加源码共读活动。活动介绍可以点击文末的阅读原文。https://juejin.cn/post/7079706017579139102很多人关注我的公众号是因为我写了一系列源码文章&#xff0c;想参与源码共读活动。虽然现在有近50…

hashmap 从头到尾_如何从头到尾设计一个简单的复古徽标

hashmap 从头到尾在纸上素描粗糙的概念 (Sketch rough concepts on paper) Start by sketching out a few ideas for your logo on paper. These don’t have to be detailed drawings. Instead, it’s about getting your ideas out quickly. In this early stage, you can ex…

(转)android技巧01:Preferencescreen中利用intent跳转activity

原文连接&#xff1a;http://blog.csdn.net/xianming01/article/details/7543464 设置中的Preferencescreen不仅可以作为设置界面显示&#xff0c;而且还能够启动activity&#xff0c;下面主要是对启动activity的介绍1. Preferencescreen中启动activity 例如wireless_setting.x…

Vue 2.7 正式发布,代号为 Naruto

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。…

js设置css色相旋转_色相旋转颜色方案是否保留了对色盲友好的能力?

js设置css色相旋转Hue rotation is often an easy way to change the appearance of a plot or figure without the need to create a new colour bar. However, when dealing with colourblindness, it is important to ensure that the spacing between colours is sufficien…

Tyvj 1921 Freda的烦恼

我就不说是CF hot days 原题了&#xff0c;我会告诉你使用Math库是因为一开始偷懒不想写Min函数么- 1 Uses math;2 Var n,m,i,t,tt,x,cost,ans,tmp:qword;3 Function min(x,y:qword):qword;4 Begin5 if x>y then exit(y);6 exit(x);7 end;8 Begin9 readln(n,m);10 …

ux设计中的各种地图_在UX设计中使用阿拉伯语

ux设计中的各种地图Last year I got to work on an app that was ultimately going to be deployed globally in every market and every language including RTL (Right-to-Left) languages — with a specific focus on Arabic.去年&#xff0c;我开始致力于开发一个应用程序…

如何为前端项目一键自动添加eslint和prettier的支持

本文来自读者那个曾经的少年回来了 写的源码共读35期笔记文章&#xff0c;授权投稿&#xff0c;写的真好。本文参加了由公众号若川视野 发起的每周源码共读活动&#xff0c;点此加我微信 ruochuan12 了解详情一起参与。本文属于源码共读第35期 | 为 vite 项目自动添加 eslint 和…

Server.Transfer方法在页面间传值

a.aspx页面代码&#xff1a; protected void Button5_Click(object sender, EventArgs e){Server.Transfer("b.aspx");}public string name{get{return this.TextBox1.Text;}} b.aspx页面代码&#xff1a; private void TheFour(){a newWebContext.Handler as a;//创…

极端原理_为极端而设计

极端原理*You can also read this article in German here.*您也可以 在此处 阅读 德语文章 。 In this article I’m going to draw on the Design thinking concept of designing for extreme users and I will argue that designing for extreme users can be considered a…

当CV工程师碰到了拷贝粘贴的需求——useClipboard的使用及源码解析

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。…

centos利用tar包安装phpmyadmin

我的网站根目录地址为/var/www/html&#xff0c;phpmyadmin安装包在/tmp下。 注意&#xff1a;php版本低于5.1的建议安装phpmyadmin2.11&#xff0c;因为phpmyadmin3.3对php版本的最低要求是php5.2 1 [rootCentOS ~]# tar -zxvf /tmp/phpMyAdmin-2.11.9-all-languages.tar.gz …

ux和ui_从UI切换到UX设计

ux和uiI still remember those days, when I was a soon-to-be graphic design graduate who started to question what my future will be. At that time, I realized that I loved graphic design, but I wasn’t sure if I enjoyed doing it. Creating logos, posters, broc…

春季招聘后前端工程师的就业指南

尽管疫情反复&#xff0c;大厂裁员&#xff0c;招聘季仍是在困难中有条不紊地落下了尾声。回顾今年的春季招聘&#xff0c;北京青年报记者发现&#xff0c;互联网“大厂”依然对“研发岗”需求最为旺盛。但许多企业最近都在围绕“降本提效”来进行业务调整&#xff0c;这对技术…

探索式测试的思维模型

上一章介绍了探索式测试的定义。在实际项目的测试执行过程中&#xff0c;读者是否曾遇到如下的几个现象&#xff1a; 测试人员按照一个测试用例来执行测试&#xff0c;得到的程序输出与预期输出不一致。 测试人员判断程序的行为并不是缺陷&#xff0c;但根据新的输出想到了新的…