.NET 自带报表 Rdlc 动态增加子报表

来源:互联网 发布:纹身字体设计软件 编辑:程序博客网 时间:2024/06/05 03:53

在有子报表的情况,有时候会报找不到 subreport1 ,请查看是否发布等信息。这个时候需要将主报表和所有的子报表都用stream方式加载到页面

有时候,根据项目的需要,需要将项目需要的几个子报表集成到一个主报表中,就要在主报表里插入子报表。并在【将此报表用作子报表】输入框中写入要添加的子报表名称(备注:名称不要加RDLC。

1:如果添加的子报表为静态报表(子报表里面的内容一致不变),需要将子报表和主报表放在同一目录,否则出现找不到的情况

2:如果增加的子报表是动态报表(子报表里的内容会在运行时候随着后台数据的不同,发生变化),需要将主报表和子报表都通过stream加载到reportview中,具体代码如下:

            ReportViewer1.Reset();            StreamReader mainstream = new StreamReader(Server.MapPath("~\\主报表.rdlc"));            ReportViewer1.LocalReport.LoadReportDefinition(mainstream);            mainstream.Close();            if (ReportViewer1.ShowReportBody == false)            {                ReportViewer1.ShowReportBody = true;            }           static List<string> _reportNameList = new List<string>();           _reportNameList.Add("子报表1");//这个名字为在插入子报表时候,需要输入的报表名称。这个名称可以有具体的文件也可以没有。不要用类似Subreport2名称去加载子报表,否则会出错           _reportNameList.Add("子报表2");           foreach (string reportName in _reportNameList)            {                StreamReader subStream = new StreamReader(Server.MapPath( reportName + ".rdlc"));                ReportViewer1.LocalReport.LoadSubreportDefinition(reportName, subStream);                subStream.Close();            }            //设置主报表数据源和所有报表(主,子)报表需要的参数等逻辑           // ReportViewer1.LocalReport.DataSources.Add(数据源);            //设置子报表进行事件订阅                        ReportViewer1.LocalReport.SubreportProcessing +=  new SubreportProcessingEventHandler(SubreportProcessingEventHandler);

3:如果子报表需要参数的话,还需要在插入的子报表--右击子报表属性--参数,添加对应的参数名。值为主报表参数。(主报表根据子报表需要,也要添加相应的参数),这样子报表才不会报:缺少参数 等错误信息。

备忘录:有时候需要在柱状图上加上移动平均线,这个时候,需要在图形上部的汇总字段上--右击--添加计算序列--计算序列属性--常规--选择公式。

   ReportView 自适应宽度高度属性 ReportViewer1.SizeToReportContent = true

    异步加载:ReportViewer1.AsyncRendering = true;

   缩放模式:ReportViewer1.ZoomMode= "FullPage"; 

    分组: 工具箱中拖一个列表过来,设置 列表-->行组-->组属性--常规-->组表达式=Int((RowNumber(Nothing)-1)/10)--分页符-->勾选在组的结尾

0 0
原创粉丝点击