ReportView 如何实现按页码控制报表对象的显示属性
1. 业务要求
某电厂要求实现如下格式报表:
在多页报表中,第一页需要显示操作时间,终了时间,操作任务。如下图所所示:
第二页以后(包括第二页)不需要显示操作时间,终了时间,操作任务统一显示为上呈第一页。如下图所示:
2实现思路:
2.1在ReportView的翻页事件想办法:
(1)先做两张不同的报表,分别为符合第一页格式的报表1与符合第二页以后的报表格式2.
(2)在报表的翻页事件中进行判断,如果当前页码是第一页,那么载入报表1;如果不是第一页,那么就在如报表2
结论:这种方法实现后的效果是,报表web页预览时一切正常,然而在报表插件中预览与打印,都会呈现一种报表,要么是报表1,要么是报表2,(具体是那个报表,由在web页面单击打印时载入的报表决定)。要解决报表插件中的预览与打印,在插件中想办法,几乎不可能,插件在服务器端不可能被编程控制。所以这种方法的尝试到此为止。
2.2在报表文件中想办法:
(1)把所有需要在第一页显示,而不需要在第二页显示的报表字段,线等报表对象都列出来。
(2)在在对象的Visibility中的hidden中写入如下的visual basic 表达式:
=Iif(Globals.PageNumber.Equals(1),False,True)
如果报表的当前页码是第一页,那么报表对象的隐藏属性为False,否则隐藏属性为True
结论:web页预览与插件预览都正常,打印也正常。
所以对于Reportviewer中的报表对象的控制,主要应该在rdtc文件中想办法,而不是在.cs文件中想办法。