zoukankan      html  css  js  c++  java
  • Rdlc子报表的动态添加

    大概注意事项:

    1.确定主报表中子报表的名称与动态加载报表的名称一样
    2.子报表加载数据的事件在加载子报表流的后面
    3.报表要重新Reset并处理过Refresh
    4.eg:
          void BindReport()
          {
                 //动态create报表
                 CreatesubRdlc();

                ReportViewer1.Reset();
                StreamReader mainstream = new StreamReader(Server.MapPath("~/RdlcDoc/" + Request.QueryString["ReportName"].ToString() + ".rdlc"));
                ReportViewer1.LocalReport.LoadReportDefinition(mainstream );
                mainstream .Close();
                StreamReader substream = new StreamReader(Server.MapPath("~/RdlcDoc/" + prerpt + strMenuId + "CommRdlc.rdlc"));
                ReportViewer1.LocalReport.LoadSubreportDefinition("CommRdlc", substream);
                substream.Close();

                //加子报表事件
                ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SubreportProcessingEventHandler);

                //开发主报表
                ReportViewer1.LocalReport.DataSources.Clear();
               //加载主表数据
                DataTable dt = ((saveSession)Session["pintQryData"]).dtdata;
                ReportDataSource rds1 = new ReportDataSource("ReportDB", dt);
                ReportViewer1.LocalReport.DataSources.Add(rds1);
                //加参数
                ReportParameter[] inpara = ((saveSession)Session["pintQryData"]).rptParam;
                ReportViewer1.LocalReport.SetParameters(inpara);
                //refresh
                ReportViewer1.LocalReport.Refresh();
               //删除临时产生报表
                System.IO.File.Delete(Server.MapPath(prerpt + strMenuId + "CommRdlc.rdlc"));
        }
        /// <summary>
        /// 为子报表加数据源
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
      void SubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e)
          {
              DataTable dt = ((saveSession)Session["pintQryData"]).dtdata;
              ReportDataSource rds1 = new ReportDataSource("ReportDB", dt);
              e.DataSources.Add(rds1);
          }

  • 相关阅读:
    animation——鼠标放上图片旋转
    docker安装Redis并设置密码
    Docker安装MySQL详细教程(mysql是5.7版本,可以根据自己需要修改版本)
    Linux安装jdk(两种方式)
    Nginx http 反向代理高级应用
    jenkins 远程启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    从一个Git仓库转移到另外一个仓库
    使用Spring @DependsOn控制bean加载顺序
    Swagger2异常:Illegal DefaultValue null for parameter type integer java
    springboot的实体类Integer和int如何选择
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1991258.html
Copyright © 2011-2022 走看看