报表工具用来用去,其实还是微软自带的ReportViewer比较轻量好用,一般需求完全够用。只是由于不常用,总会有解决一个问题过段时间又忘了怎么解决的问题。索性整理一下,当作笔记了。

在票据打印的时候,为了美观,要求每页都行数固定,即便数据不够一整页,也要用空行填充。这个需求,实现的基本原理就是:分组,一个分组刚好一页,所以他就每页行数固定了,至于不够整页用空行填充的话,可以在数据集中添加空白数据,比如8行一页,不足8行用空数据填充到8行,总之填充到:数据数量%每页行数=0即可。下面来详细说明实现方法:

首先说明一点,通过行高及页眉页脚的高度去控制分页是不可靠的,页数多了之后误差越来越大,最后就出现断行、位置变化等问题。

每页固定行数:

首先设置好行高,确保每页显示N行时页面布局刚好。

int PageRows = 8;//每页显示的行数if (shdMx.Length % PageRows != 0){//不足8行填充空行List<SongHdMx> mxList = new List<SongHdMx>();mxList.AddRange(shdMx);//单据数据是根据Id排序的,为了排序不让空白数据跑到真实数据的前面,找出真实数据的Id最大号long a = mxList.Max(s => s.Id);while (mxList.Count % PageRows != 0){a++;//将真实数据的最大Id号加1,作为填充的空数据Id号,当然了,界面上是不显示这个Id的,只排序mxList.Add(new SongHdMx(a));}shdMx = mxList.ToArray();}……reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ShdMx", shdMx));

用于控制每页显示固定行数的分组表达式为:=Int((RowNumber(nothing)-1)/Parameters!PageRows.Value)

其中的PageRows为传入的报表参数,也可以直接写数字。

接下来再设置一下分页符中的选项,只勾选“在组的各实例之间”即可。

到这一步,在没有填充空数据用于占行的情况下,每页显示固定行数已经可以了,但是如果有空行数据填充的,还要做一件事,不然所有填充的空数据行是不会显示的,这就是为什么前面填充空数据的时候,我们要赋一个Id进去,就是为了根据这个Id分组,排序,如果全是空,填充再多的数据也会被分组功能合并掉,以至于会不显示。

那就是在主行数分组下面添加子分组,主分组控制每页显示的行数,子分组用于保证填充的空白数据行不被分组合并掉。

至此,每页显示固定行数,且能添加空白数据的问题已经彻底解决。

接下来,我们看看,每页都显示表头的问题。

第①步:点击列组右边的小三角,选择“高级模式”,

第②步:选中行组中的第一行(静态),这个其实就是表头的第一格,

第③步:在属性栏设置:RepeatOnNewPage=true,KeepWithGroup=After(因为第一页本来就有表头,第二页开始才没有,所以设定After)

看一下效果:

ReportViewer单据票据打印,自动分页,每页显示固定行数,每页都显示表头相关推荐

  1. Anaconda自带Python编译器Jupyter Notebook显示代码行数

    ESC:进入命令行模式:按下H即可显示各种快捷键信息 Enter:进入编辑模式 方法一:命令方法 一.点击代码段,按ESC,使代码段显示蓝色,进入命令行模式 二.按下Shift+L,显示代码行数 方法 ...

  2. Eclipse Console 加大显示的行数,禁止弹出

    原文链接:http://blog.csdn.net/leidengyan/article/details/5686691 --------------------------------------- ...

  3. eclipse怎么显示代码行数

    熟悉java开发的朋友们肯定有这样的经验,那就是在用eclipse进行java开发的时候,没有显示代码的行数,这并不利于我们进行程序的调试.今天,小编就来教大家eclipse怎么显示代码行数 工具/原 ...

  4. [转载][工具]Eclipse Console 加大显示的行数,禁止弹出

    Eclipse Console 加大显示的行数: 在 Preferences-〉Run/Debug-〉Console里边,去掉对Limit console output的选择,或者选择,设置一下buf ...

  5. 设置命令提示符显示符行数

    命令提示符默认显示的行数有限,当日志文件非常多时,有些日志文件就会不显示 [设置方法如下] 打开 命令提示符-->单击命令提示符窗口的左上角,然后单击"属性" 单击" ...

  6. eclipse中显示代码行数

    eclipse如何显示行数, eclipse如何显示行数           Window->Preferences->General->Editors->Text Edito ...

  7. Eclipse显示代码行数的3种方法

    1. 使用快捷键: ctrl + F10 会跳出如下界面: 勾选 show line numbers 就可以了 2.点击边栏的深色区域 也会出现方法1所示的界面 3.属性设置 在Window-> ...

  8. 打印倒三角形——固定行数与键盘输入行数

    打印倒三角形 一.固定行数-5行 思路:将整个三角形分成三部分,图中已分别用1.2.3标明.代码中要使用3个for循环,第一个for循环打印内容以"空格"形式展示,即左边的直角三角 ...

  9. Navicat:显示的行数与表中实际的行数不一致

    文章目录 1 Navicat 显示的行数 2 实际的行数 3 原因 1 Navicat 显示的行数 2 实际的行数 SELECTCOUNT(*) FROMtable1 3 原因 MySQL 在当前连接 ...

最新文章

  1. C++编程思想重点笔记(下)
  2. OAuth2基本概念和运作流程
  3. 计算机技术基础期末考试,《计算机网络技术基础》期末考试试卷
  4. 一般屏幕的3D模型是公开的吗?
  5. html代码 打开本地文件,打开本地HTML文件
  6. warning: function declaration isn’t a prototype(函数声明不是原型)的解决办法
  7. iOS常用的存储方式介绍
  8. c 语言 循环判断语句,C值循环语句(七)
  9. 二阶rc无源低通滤波器matlab,二阶rc无源低通滤波电路
  10. 如何解决Word文件打不开呢?几个简单的步骤
  11. php font 字体加粗,字体加粗(font-weight)
  12. [回头再说] 国内网页游戏背景音乐
  13. HTML5期末大作业:动物主题网站设计——酷酷动物主题响应式网页(5页) 大学生动物主题网页作品 动物网页设计作业模板 学生网页制作源代码下载
  14. ICC2里面多进程任务
  15. 基于rhcs套件实现的高可用集群
  16. hcip难不难?华为认证考试难不难?
  17. wps应用程序实例_有一个WPS Office应用程序实例wps.exe在运行,请关闭后重试 。如何解决?...
  18. bit、Byte、bps、Bps、pps、Gbps单位说明
  19. 致敬贝叶斯以及自己对贝叶斯的一些见解
  20. 宜人贷PaaS 数据服务平台简介(上篇)

热门文章

  1. ACS600变频器晶闸管供电部分用户手册
  2. 北京理工大学_操作系统复习提纲
  3. 阿里canal的理解
  4. avada主题符合SEO搜索吗
  5. 四川大学网络空间安全学院,考研改科目了!
  6. 软考系统架构设计师概念点总结
  7. 基于STM32F429的SDRAM使用
  8. 给你5分钟白漂:这些都是我的常用在线工具和网站
  9. Springboot发送Email
  10. python如何读取csv文件某几行某几列_扣丁学堂简述如何实现pandas读取csv文件指定的前几行...