来自懒人张:RDLC报表(四)
        RDLC报表中有一个概念叫数据区域(Data Region),数据区域是数据绑定的报表项目,在数据区域中可以显示来自数据集的多行数据。RDLC报表设计器中的数据区域包含控件面板上的一系列控 件:List、Table、Matrix、Chart,如图所示,

List控件的用处在于这是一个在其中可以自由安排像TextBox、Image等控件;Chart控件用于显示图表,和Excel中的图表比较相似。这篇随笔不会涉及到这两个控件,主要讲一下Table和Matrix两个控件。

先来看Table控件。Table控件有多个部分组成,如标题行(header)、表尾(footer)、数据行(detailed rows)、分组表头(group header)、分组表尾(group footer)等,如图所示,

之所以设计这样一个控件,我想Microsoft一定是在简化报表的设计:

在这个控件未出现之前,我们看一下一个具有heaer、detailed rows和带统计信息的footer的报表时如何实现的。首先,这个报表需要显示报表页眉、主体和报表页脚三个部分,然后在报表页眉中拖曳进一系列 Label形成表格的标题行,接着在主体部分拖曳进一系列TextBox用于显示数据行,并在报表页脚中拖曳进一系列Label或TextBox用于显示 统计信息;要命的是,这些Label或TextBox需要在某个方向上进行对齐,控件宽度的调节也非常麻烦,如果需要显示表格线,那么没办法,需要使用 Line控件手工画,这是非常麻烦的一件差事,相信没人会喜欢用这么麻烦的方法来设计这么一个简单的报表。

现在,Microsoft推出了Table控件,你需要做的只是确定表格的列数(因为表格的列数需要是固定的),然后将字段从Data Sources面板中拖曳到Table控件的数据行中就可以了,报表设计器会自动为你生成标题行中的标题信息;至于footer中的统计信息 Microsoft甚至为我们设计了一个表达式生成器,使用起来非常简便;列宽可以通过拖曳来调整,表格线可以通过设置Table控件的属性来完成。

是的,一切就是这么简单!这也很可能是为什么你在Visual Studio 2005的报表设计器中找不到报表页眉和报表页脚的原因,只有页面页眉(page header)和页面页脚(page footer)就足够了!

当然,可能报表中也需要不是像表格这么整齐排列的数据区域,这时候就需要用到List控件了。

在实际应用中,发现一个表格控件可以具有零个、一个或多个header或footer,甚至可以没有detailed rows,这样的表格控件有什么作用呢?我们知道detailed rows是用来显示多行数据的,而heaer或footer都可以用来显示sum、count等统计信息。假如我们的数据集中同时具有主子表(如通过 Inner Join获得的一个查询)的信息,而这时候我们需要将主报表的信息单独显示出来使整个报表形成一个主子表的样式,那么我们就可以用到没有detailed rows的Table控件了,为header或footer中的单元格指定First(Fields!字段名称.Value, "数据源名称")就可以了,这样至少减少了我们排列这些字段信息的烦恼。也就是说,Table控件是非常灵活的。CodeProject上有一篇文章 One to Many Reports with VS.NET 2005 (2.0) Report Designer(http://www.codeproject.com/dotnet/1tomanyreports_vsnet2005.asp)即是用这种主子数据集显示的主子报表,但是个人觉得不如上面描述的方法来的简单,顶多给报表增加一个可以标识主记录的参数而已。当然,正儿八经的主子报表还是需要借助SubReport控件来实现。

再来看一下Matrix控件,这个控件可以看作是Microsoft的又一个创新,以前的报表中可能会有交叉表(crosstab),但Matrix控件 反映的不只是一个交叉表,还可以看作是一个带钻取功能的数据透视表(pivot table)。Matrix控件由以下部分组成:

如果由我们自己使用一个普通的数据集来绘制一个crosstab,那会是一个非常麻烦的工作,我们需要:为数据透视报表设置行标题;计算可能的列标题数量 并设置列标题,根据行标题和列标题在数据集中循环查询由当前行标题和列标题决定的值,整个过程的计算量就够受的了。作为被Microsoft封装过的一个 控件,Matrix控件显然不需要这么麻烦,简单的拖曳操作并设置其属性就可以了。当然,在报表中使用交叉表最重要的一点是最终显示的结果必须是有意义 的。

需要注意的是,当包含Matrix控件的报表导出到Excel文件中以后,即使是未显示的带有钻取标志的区域也将被显示出来,可能你会有这样的疑问:既然 是数据透视表,为什么在Excel中不能显示成折叠的样式呢?这是因为报表的导出功能是并不依赖于Excel的。

转载于:https://www.cnblogs.com/JuneZhang/archive/2013/01/10/2855094.html

分享懒人张RDLC报表(四)相关推荐

  1. 分享懒人张RDLC报表(五、六)

    来自蜡人张:RDLC报表(五) 随着Visual Studio 2005中文版的推出,Microsoft汉化了MSDN的大部分内容,开发者再也不用啃英文了,本来想介绍一下LocalReport的Ren ...

  2. 使用RDLC报表(四)--钻取式报表

    本文内以MSServer自带Northwind库文件内的Customers及Orders这两个表为例,建立两个报表文件,在查询得出Customers的表数据后,点击此表内的CustomerID数据,报 ...

  3. C# rdlc 报表学习总结

    C# 创建报表过程详解 http://www.jb51.net/article/68481.htm 本文给大家介绍的是使用vs2012 c#创建报表的全部过程的记录,十分的详细,有需要的小伙伴可以参考 ...

  4. 使用RDLC报表(三)--向RDLC报表传入参数

    在使用报表向客户展示结果数据时,实时的在报表中显示某些特定的数据是必需的,如:显示的部门.打印的日期等.本文只简单的演示向报表内传入一个字符值.如有其它问题,欢迎讨论. 1.新建一个工程TestRep ...

  5. 报表 labview_【LabVIEW懒人系列教程小白入门】1.3LabVIEW数据类型

    上期作业解答: 如何对齐控件(动图) 第一种方法: 第二种方法: 第三种方法: 第四种方法: 大家尝试至少用第一种方法编写出该题. 作业讲解结束 labview中需要熟悉的控件类型有: 基本数据类型: ...

  6. [超级懒人最简单法]iPhone 6 plus 适配切图方法分享(转载文章)

    网络上已经有很多适配教程,可是看了半天总是半懂不懂..最后还是要综合多个教程再动动脑子动动手,最好有程序大哥帮你试一下(这得有多大的福气) 如果有跟我一样情况的: 1.       有人说用sketc ...

  7. html懒人编辑器,前端老司机分享——五个前端代码编辑器

    工欲善其事,必先利其器.但我最开始接触网页的时候,人们普遍认为能用记事本写HTML和CSS的才是大神. 那时也没有前端这一说法,随着网页越来越复杂用记事本的开发效率就太低了,也就有了前端代码编辑器的出 ...

  8. wince 百度地图懒人包_【分享】路虎高德V6.0+V33图资懒人包(WIN CE)【亲测】

    本帖最后由 hnxzsk 于 2016-8-1 09:50 编辑 [分享][转载][亲测][可用] 路虎高德V6.0+V33图资懒人包 看到网友发的是凯立德的地图,有朋友说经常用的是高德,本人就分享过 ...

  9. RDLC报表系列(一) 简单的动态数据绑定和配置

    RDLC报表系列(一) 简单的动态数据绑定和配置 原文:RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置  RDLC报表系列(二) ...

最新文章

  1. C++11之右值引用(三):使用C++11编写string类以及“异常安全”的=运算符
  2. Matlab循环读取txt文件并对其中数据进行计算最后导出为excel
  3. sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析
  4. 函数重载 覆盖 隐藏
  5. 紧急不代表重要:管理时间的六个秘密
  6. 六.dbms_session(提供了使用PL/SQL实现ALTER SESSION命令)
  7. python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...
  8. QTP User-Defined Function 学习经验汇总
  9. Apple计划开发完全定制的GPU架构
  10. 关于java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 实体类
  11. linux centos挂载数据盘教程
  12. ext2文件系统源代码之inode.c
  13. 在办公室说话要注意哪些?
  14. 程序员学习的网站(持续收集中)
  15. python制作日历并保存成excel_Python+Excel制作精美壁纸日历,任意DIY
  16. 了解掌握Java的循环语句、条件语句、分支语句(Java 从自学到就业 第3天)
  17. python list超出范围_错误:列表索引超出范围Python(Error: List Index out of Range Python)...
  18. 好安卓博客收集【2022年】
  19. 计算机光驱参数,光驱价格参数简介【图文】
  20. 【vue】vue中axios的使用及vue生命周期详解_07

热门文章

  1. 露雨资源库(第一个.net2.0软件)二
  2. VS Code插件之Cordova Tools
  3. 剑指offer 面试64题
  4. 解决第一个div浮动,后面div覆盖的问题
  5. Centos配置nginx反向代理8080端口到80端口
  6. phpexcel用法(转)
  7. AFNetworking和ASIHTTPRequest的比较
  8. SqlDataAdapter上调用存储过程
  9. ASP.NET中常用到的27个函数集
  10. php ci hooks,CI框架 -- 核心文件 之 Hooks.php