lc3w 发表于 2016-9-19 18:07:51

动态加载子报表时如何计算分页位置

本帖最后由 Lenka.Guo 于 2016-9-20 11:05 编辑

我的数据分析报表比较复杂,整个结构都是动态生成的,结构为:一个主报表(如rptMain),里面的子报表数量不固定,根据用户后台数据库中配置的数据来动态生成每一个章节,比如有一个首页报表(rptHomePage),又有一个前言页(rptIntroduction.cs),又有动态的章节报表模板文件(rptChart),我在rptMain的ReportStart()中如下动态创建子报表
         
      private void rptDA_Main_ReportStart(object sender, EventArgs e)
      {
            //创建封面页
            SubReport subReport = new SubReport();
            rptHomePage rpt = new rptHomePage();
            subReport.Left = 0;
            subReport.Top = 0;   //第一页封面可以直接使用0值
            this.detail.Controls.Add(subReport);
            subReport.Report = rpt;



            //创建前言页
            SubReport subReport = new SubReport();
            rptIntroduction rpt = new rptIntroduction();
            subReport.Left = 0;
            subReport.Top = ??;   //这里的Top值应该是多少?如何获取前面一页加载完后后的Height值?
            this.detail.Controls.Add(subReport);
            subReport.Report = rpt;
      }

      这里的相对Top值不知道如何计算




Lenka.Guo 发表于 2016-9-20 11:03:42

本帖最后由 Lenka.Guo 于 2016-9-20 11:10 编辑

抱歉回复晚了

以我的理解,如果需要动态控制子报表的位置,那么下一个子报表的Top属性可以由之前子报表的高度之和控制,这个时候后面的子报表也会根据高度来自动换页;
如: private void SectionReport4_ReportStart(object sender, EventArgs e)
      {
            SectionReport3 RPT = new SectionReport3();
            SectionReport2 RPT2 = new SectionReport2();
            
            this.subReport1.Report = RPT;
            
            this.subReport2.Report = RPT2;
            this.subReport2.Top = this.subReport1.Height+ 1;


      }

lc3w 发表于 2016-9-22 14:28:02

Lenka.Guo 发表于 2016-9-20 11:03
抱歉回复晚了

以我的理解,如果需要动态控制子报表的位置,那么下一个子报表的Top属性可以由之前子报表 ...

谢谢你的回复,我试一试先

Lenka.Guo 发表于 2016-9-22 14:28:36

lc3w 发表于 2016-9-22 14:28
谢谢你的回复,我试一试先

:loap1:
页: [1]
查看完整版本: 动态加载子报表时如何计算分页位置