关于页面的控件获取
本帖最后由 Lenka.Guo 于 2016-9-13 09:50 编辑假设我页面打印显示为3页,我设置了PageFoot处有一条横线 ID为LINE1
我如何在代码里将第三页的LINE1设置隐藏显示。前面2页正常显示?(就是简单用代码的方式来控制3页Page的控件的显示与否)
另外,在代码中只能获取PageNumber,如何能获取当前报表的PageCount,MaxPage一直显示0。
ReportInfo里可以设置 看到PageCount,属性里没有。
本帖最后由 Lenka.Guo 于 2016-9-12 12:20 编辑
如果是区域报表,可通过以下代码来获取:SectionReport1 sr = new SectionReport1();
sr.Run();
int TotalPages= sr.Document.Pages.Count;
int CurrentPage=sr.PageNumber;
如果是页面或RDL 报表中,可通过设置 Line 的Visibility中的Hidden 属性为: =IIF( Globals!PageNumber = Globals!TotalPages ,TRUE,FALSE),来表示是否显示
如果是区域报表,可通过以下代码来获取:SectionReport1 sr = new SectionReport1();
sr.Run();
int TotalPages= sr.Document.Pages.Count;
int CurrentPage=sr.PageNumber;
此代码有效,但是无法解决我的问题。
我如何在报表运行的时候得知,当前的PageNumber是最后一页呢?
说的再简单一点。假设报表一共有3页。
我要在第一页,第二页显示pagefoot中的一个控件假设控件ID是line1。第三页不显示这个控件。
实际操作的情况是,在报表run之前,我运行报表代码的时候无法得知当前报表最后的PageNumber,也无法自由控制 1,2,3 页面中page中的控件
没有类似Pages.line1.xxx这种控制控件的方式。
不知道能否明白我说的内容。:)
了解您的意思了,测试之后给您答复 该问题麻烦请尽快回复。 diablox 发表于 2016-9-18 13:44
该问题麻烦请尽快回复。
您好,通过测试确认
1. 首先在区域报表报表生成时无法获得总页数,所以导致无法控制每一页中控件的可见性。
2. 您的需求是要在页脚部分控制控件,可以插入ReportFooter,这个区域是只在报表的最后一部分来显示的。
或是通过在报表脚本中添加以下方法,硬编码来实现,如代码:
int count = 0;
public void 页脚_Format()
{
if(count==4)
this.line1.Visible = false;
}
public void ActiveReport_PageStart()
{
count++;
}
感谢回复,这个问题主要还是和另外一个帖子有关,就是我询问过关于页面封口的问题。但那个帖子没有下文了。
首先,ReportFoot我知道是在整个报表最后显示内容。但其实和我的需求是相反的,根据您说明的由于区域报表无法无法控制每一页中控件的可见性。比如我有个报表一共有3页,第一页和第二页由于Details部分数据量大会根据内容自动换页。然后我在PageFoot中增加一条横线,这个操作的作用是用来数据换页的时候在底部增加一条横线,将换页导致的页面开口封闭掉,使报表看起来完整。所以您提供的案例中,ReportFoot只能在报表的最后一页控制这个线是否显示,而不能在每页都加线,然后最后一页不显示。
第二个问题是,您给的代码里,Count是页面数合计,在PageFoot的Format中,代码示例显示是COUNT==4,这个4我不知道如何出来的。这个4其实应该就是我需要的当前报表的最大页数。这个4我其实在编码的时候是不会知道的。
AR作为一个有悠久历史的报表软件。我很好奇难道我是第一个有这种需求的用户?上传实际的打印效果
diablox 发表于 2016-9-18 15:45
感谢回复,这个问题主要还是和另外一个帖子有关,就是我询问过关于页面封口的问题。但那个帖子没有下文了。 ...
非常抱歉,您在产品使用的过程中带来不便。您是否方便留个联系方式,我们电话沟通。
非常抱歉您之前发的帖子封口问题没有解决: http://gcdn.gcpowertools.com.cn/showtopic-23617-1-1.html;误以为您没有回复就是问题解决了。
非常抱歉。
您好,
因为报表是异步加载的方式,所以无法在运行时就给出总页数来对页面控制;因为之前不了解您的应用场景所以有所延误,非常抱歉。
针对您的封口问题,有一个workaround 希望对您有用:
1. 打开报表,选择脚本选项卡,实现ReportEnd事件
2. 通过为除特定要求的页上进行划线来实现封口问题,代码:
public void ActiveReport_ReportEnd()
{
for (int i = 1; i < rpt.Document.Pages.Count - 1; i++)
{
rpt.Document.Pages.DrawLine(1, 11, 12, 11);
}
}
结果预览:
感谢回复,目前我们在PageFoot处增加了一个固定样式,以此来实现封口功能。我们现在用的SectionReport,并无法取到rpt.Document.Pages.Count这样的东西。我们会试试看其他类型的报表看看能否方便的解决这个问题。此贴可以结贴了~,再次感谢。
页:
[1]
2