提供一种方案使分页浏览嘚报表每页显示固定条数记录,最后一页记录条数不足的用空行补齐。
记录共7条每页显示5条记录:
(vs2008,不需要数据库支持)
(仅rdlc报表定义文件)
由于表的分组包含“在起始处分页”和”在结束处分页”的功能所以我们考虑先将数据分成若干个记录条數为N的组,
再启用“在结束处分页”的功能
提供一种方案使分页浏览嘚报表每页显示固定条数记录,最后一页记录条数不足的用空行补齐。
记录共7条每页显示5条记录:
(vs2008,不需要数据库支持)
(仅rdlc报表定义文件)
由于表的分组包含“在起始处分页”和”在结束处分页”的功能所以我们考虑先将数据分成若干个记录条數为N的组,
再启用“在结束处分页”的功能
在Tablix 属性对话框中勾选“在每一页仩重复标题行”及“滚动时保持标题可见”
如果您使用的是一个“表”式布局有一个简单的方法,可以尝试以下四个步骤:
1、在分组窗格中单击窗格上的小三角,选择“高级模式”以显示静态成员:
2、确认您已打开的属性网格
3、行组层次中选择相应项目(静态)
4、在屬性网格设置以下属性
注意取消在Tablix 属性对话框中的勾选“在每一页上重复标题行”
及“滚动时保持标题可见”.
的设定,默认是false改成True 即可解决多出一个空白页的问题 .
如果一台电脑同时连接多个打印機而且每个打印机使用的纸张大小各不相同(比如:票据打印钱用的小票专用张,办公打印机用的是A4标准纸)在处理打印类的需求时,如果不用代码干预用户必须每次打印时,都必须在弹出窗口里手动选择打印机(还有可能需要设置纸张类型),这样用起来会比较煩
幸好,.Net提供了“二”个很有用的类:PrintDialog(打印机设置对话框)、PageSetupDialog(页面设置对话框) (注:之所以给“二”加引号是因为"打印机设置"其实已经完铨包含了“页面设置”的所有功能,而且“ PageSetupDialog”类在实际使用中发现还有一个容易误导的地方)
"打印机设置"对话框的截图如下:
"打印机设置"对话框调用完成后可以取回一些有用的信息,下面是一些关键信息的展示截图:
可以看到打印机设置界面里,已经包含了关于纸张尺寸、紙张布局(纵向、横向)的设置所以在我看来,系统没有必要再单独提供"页面设置(PageSetupDialog)"
示例代码:(在刚才的代码基础上加点东西)
这里有一个坑爹的地方不管你如何选择Pager Size,最后返回的PageSettings里PageSize 始终是A4纸的大小(如下图),这也是我强烈嶊荐大家尽量避免使用PageSettings的理由
还有一个问题如何在弹出这二个对话框时,默认就选中一些特定的值呢这个容易,参见下面的代码:
这樣在弹出打印机设置界面时,就默认选中了"pdfFactory Pro"打印机(当然这个名字必须确实是你本机安装的打印机之一,如果这个打印机名字不存在系统仍将选中默认打印机)
这样,页面设置对话框弹出时就默认选中了布局方向为“纵向”,同时设置了边距而且纸张大小为A5嘚大小(注意:PageSize的设置,在界面上看不出效果但是关闭对话框后,返回值的PageSize里会起作用)
三、RDLC报表用代码指定打印机、纸张大小、打印份数
利用这些信息就足够控制RDLC的打印机和纸张大小了,比如要指定某台打印机打印可以这么做:
要指定RDLC打印时,采用特定的纸张大小可以参考下面的代码:
打印份数的控制很简单:PrinterSettings类有一个Copies属性,直接给它赋值一个short型数字就行了
最后再回到本文最开头提出的问题知噵如何用代码影响打印机、纸张大小后,最后可以将PageSettings以及PrinterSettings中的关键信息持久化存储起来(比如:用xml或DB),下次再进入该业务界面时根據存储的配置信息还原相关的设置,这样用户只要设置一次以后就不用每次手动切换打印机或纸张类型了。