找回密码
 立即注册

QQ登录

只需一步,快速开始

lc3w

初级会员

6

主题

27

帖子

334

积分

初级会员

积分
334
lc3w
初级会员   /  发表于:2016-9-19 18:07  /   查看:2952  /  回复:3
本帖最后由 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值不知道如何计算




3 个回复

倒序浏览
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
谢谢你的回复,我试一试先

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