水晶报表页脚和报表尾会冲突吗?

灰机大大 2015-07-27 11:09:27
有个问题纠结了一下午,问了很多同事都未果,麻烦大神看看:
我们是做一家医院的药品报表,每页有14条药品信息(如果药名不是太长需要换行的话)。
如果只有4条药,就把页码等尾部信息显示在第四条药的下面。
如果有15条药,就分页,把尾部信息显示在最后一条药下面,但第一页的底部也需要显示尾部信息。也就是说,每页都有且仅有一个尾部信息。

我是这样处理的,加了页脚和报表尾,里面都放相同的元素,高度也设置一样,然后根据当前页是否是最后一页去控制显示,如果是,显示报表尾,抑制页脚。如果不是,显示页脚,抑制报表尾。个人感觉良好,呵呵,大致测下来基本也没有问题,但是只测14条记录的时候问题就来了,第一页的页尾为空白,然后生成了只有页脚的空白页,页码居然是匪夷所思的page 2 of 1,见了鬼了...一共1页,当前是第二页...

后来多次尝试无果,把什么new page after勾啊,什么保持在一起啊什么的都试过而且无效。

但是我把页脚给完全删掉以后,第一页就把报表尾给显示出来了。所以我想是不是页脚虽然被抑制,但还是会占据空间?这样报表尾就被挤到了第二页,但是因为最后一页的条件条件不成立,所以被抑制,而页脚的条件成立,所以被显示。

还是说,水晶报表的机制是在分页完毕以后,才会去看条件作抑制?

阿门,真的希望有人能够看完这些,分都仍出来了...
...全文
190 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
灰机大大 2015-07-28
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
[quote=引用 楼主 hangsky1990 的回复:] 然后根据当前页是否是最后一页去控制显示,如果是,显示报表尾,抑制页脚。如果不是,显示页脚,抑制报表尾。个人感觉良好
哦,原来你使用的是不支持调试的水晶报表这个东西。 那么看来只有乱“碰”了。看来你只好完全当作没有想过这种逻辑,把“中间插入页脚”的逻辑彻底放弃。 你应该在Set的数据集合中就加入“页号”字段,而不是让那种无法调试的东西去做复杂的事情。(你的程序多写上3、4行代码做点复杂的事情)[/quote] 好吧,虽然被莫名说了一通,但非常感谢您以上的建议。每页中间加页尾也是客户的需求,不能因为遇到困难就说我们做不来...另外没办法在传递datasource之前对set作分页判断,因为药品的名字有些长有些短,后面还有医生写的备注,有可能一笔药就占了三行。而且每笔记录之间还有指定的空白间隙,我觉得对set做分页是没办法实现的,所以我想问问有没有谁碰到过这种页脚和报表尾重叠的情况,要怎么去处理?谢谢了
灰机大大 2015-07-28
  • 打赏
  • 举报
回复
已解决 当页脚和报表尾重叠时有可能会生成无页码的新页,用crystalReportViewer指定ReportSource以后获取当前页码,新增参数传给report,若为-1则生成了无页码的新页,此时只需要在页脚和报表尾函数里新增对-1的控制就行了
  • 打赏
  • 举报
回复
引用 楼主 hangsky1990 的回复:
然后根据当前页是否是最后一页去控制显示,如果是,显示报表尾,抑制页脚。如果不是,显示页脚,抑制报表尾。个人感觉良好
哦,原来你使用的是不支持调试的水晶报表这个东西。 那么看来只有乱“碰”了。看来你只好完全当作没有想过这种逻辑,把“中间插入页脚”的逻辑彻底放弃。 你应该在Set的数据集合中就加入“页号”字段,而不是让那种无法调试的东西去做复杂的事情。(你的程序多写上3、4行代码做点复杂的事情)
  • 打赏
  • 举报
回复
贴出你的调试画面,以及你的调试时使用的“变量监视”和“调用堆栈”(包括根据调用堆栈去调试之前的程序入口的状态),根据你的源代码来给出“为什么输出2这个数字”的代码流程上的解释。忘掉你的一对瞎猜出来的理由。
  • 打赏
  • 举报
回复
引用 楼主 hangsky1990 的回复:
但是只测14条记录的时候问题就来了,第一页的页尾为空白,然后生成了只有页脚的空白页,页码居然是匪夷所思的page 2 of 1,见了鬼了...一共1页,当前是第二页... 后来多次尝试无果,把什么
你应该调试和分析为什么会出现“2”这个数字,也就是用程序调试手段去按照代码去调试。而你做了什么?在那里瞎猜原因!

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧