fastreport每页显示固定行数

引言

最近遇到客户提的一个需求,他要一页只显示20行明细数据;一番Google之后找到了官方博客介绍相关解决办法:How to display an estimated number of records on a report page于是我写了下面的代码

1
2
3
4
5
6
7
8
9
10
11
int counter = 0;

private void Data1_BeforePrint(object sender, EventArgs e)
{
if (counter >= 20)
{
Engine.StartNewPage();//打印到新的页面
counter = 0;
}
counter++;
}

但是我预览出来,一页却只有18行;而且从设计器打印和直接打印预览的结果还不一样;

一番思考之后,我认为此处是Report.DoublePass设置导致的,在Report settings的官方教程中有说明;为解决这个问题,才有了这篇文章

解决方案

由于BeforePrint事件的问题,我查看官方文档,找到一个Report.Engine.RowNo属性,于是我这样写

1
2
if (Report.Engine.RowNo%20==0)
Engine.StartNewPage();

测试发现还是不行,每页数量依旧不对

多次预览调整后找到正确的条件判断:

1
2
if (Report.Engine.RowNo>20&& Report.Engine.RowNo%20==1)
Engine.StartNewPage();

参考资料


fastreport每页显示固定行数
http://blog.wangshuai.app/2021-03-18-fastreport每页显示固定行数/
作者
王帅
发布于
2021年3月18日
许可协议