找回密码
 立即注册

QQ登录

只需一步,快速开始

diablox

初级会员

12

主题

39

帖子

378

积分

初级会员

积分
378

活字格认证微信认证勋章

diablox
初级会员   /  发表于:2016-9-11 22:25  /   查看:6513  /  回复:10
本帖最后由 Lenka.Guo 于 2016-9-13 09:50 编辑

假设我页面打印显示为3页,我设置了PageFoot处有一条横线 ID为LINE1
我如何在代码里将第三页的LINE1设置隐藏显示。前面2页正常显示?(就是简单用代码的方式来控制3页Page的控件的显示与否)

另外,在代码中只能获取PageNumber,如何能获取当前报表的PageCount,MaxPage一直显示0。

ReportInfo里可以设置 看到PageCount,属性里没有。


10 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-12 12:17:37
沙发
本帖最后由 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),来表示是否显示


回复 使用道具 举报
diablox
初级会员   /  发表于:2016-9-12 16:17:03
板凳
如果是区域报表,可通过以下代码来获取: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[0].line1.xxx  这种控制控件的方式。

不知道能否明白我说的内容。


回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-13 15:29:23
地板
了解您的意思了,测试之后给您答复
回复 使用道具 举报
diablox
初级会员   /  发表于:2016-9-18 13:44:26
5#
该问题麻烦请尽快回复。
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-18 14:00:38
6#
diablox 发表于 2016-9-18 13:44
该问题麻烦请尽快回复。

您好,通过测试确认
1. 首先在区域报表报表生成时无法获得总页数,所以导致无法控制每一页中控件的可见性。
2. 您的需求是要在页脚部分控制控件,可以插入ReportFooter,这个区域是只在报表的最后一部分来显示的。
或是通过在报表脚本中添加以下方法,硬编码来实现,如代码:

  1. int count = 0;

  2. public void 页脚_Format()
  3. {
  4.         if(count==4)
  5.                 this.line1.Visible = false;
  6. }


  7. public void ActiveReport_PageStart()
  8. {
  9.         count++;
  10. }
复制代码














本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
diablox
初级会员   /  发表于:2016-9-18 15:45:36
7#
感谢回复,这个问题主要还是和另外一个帖子有关,就是我询问过关于页面封口的问题。但那个帖子没有下文了。
      首先,ReportFoot我知道是在整个报表最后显示内容。但其实和我的需求是相反的,根据您说明的由于区域报表无法无法控制每一页中控件的可见性。比如我有个报表一共有3页,第一页和第二页由于Details部分数据量大会根据内容自动换页。然后我在PageFoot中增加一条横线,这个操作的作用是用来数据换页的时候在底部增加一条横线,将换页导致的页面开口封闭掉,使报表看起来完整。所以您提供的案例中,ReportFoot只能在报表的最后一页控制这个线是否显示,而不能在每页都加线,然后最后一页不显示。
      第二个问题是,您给的代码里,Count是页面数合计,在PageFoot的Format中,代码示例显示是COUNT==4,这个4我不知道如何出来的。这个4其实应该就是我需要的当前报表的最大页数。这个4我其实在编码的时候是不会知道的。
     AR作为一个有悠久历史的报表软件。我很好奇难道我是第一个有这种需求的用户?上传实际的打印效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-18 15:59:02
8#
diablox 发表于 2016-9-18 15:45
感谢回复,这个问题主要还是和另外一个帖子有关,就是我询问过关于页面封口的问题。但那个帖子没有下文了。 ...

非常抱歉,您在产品使用的过程中带来不便。您是否方便留个联系方式,我们电话沟通。

非常抱歉您之前发的帖子封口问题没有解决: http://gcdn.gcpowertools.com.cn/showtopic-23617-1-1.html;误以为您没有回复就是问题解决了。
非常抱歉。
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-18 17:48:51
9#
您好,
因为报表是异步加载的方式,所以无法在运行时就给出总页数来对页面控制;因为之前不了解您的应用场景所以有所延误,非常抱歉。
针对您的封口问题,有一个workaround 希望对您有用:

1. 打开报表,选择脚本选项卡,实现ReportEnd事件


2. 通过为除特定要求的页上进行划线来实现封口问题,代码:
  1. public void ActiveReport_ReportEnd()
  2. {
  3.         for (int i = 1; i < rpt.Document.Pages.Count - 1; i++)
  4.         {
  5.                 rpt.Document.Pages[i].DrawLine(1, 11, 12, 11);
  6.         }
  7. }
复制代码

结果预览:







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
diablox
初级会员   /  发表于:2016-9-18 18:26:01
10#
感谢回复,目前我们在PageFoot处增加了一个固定样式,以此来实现封口功能。我们现在用的SectionReport,并无法取到rpt.Document.Pages.Count这样的东西。我们会试试看其他类型的报表看看能否方便的解决这个问题。此贴可以结贴了~,再次感谢。

评分

参与人数 1金币 +3000 收起 理由
Lenka.Guo + 3000 很给力!

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部