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);
          }

  • 相关阅读:
    ASP.NET Core: What I learned!
    Entity Framework Core with GraphQL and SQL Server using HotChocolate
    Angular 9 Chart.js with NG2-Charts Demo
    POST调用WCF方法-项目实践
    项目实战-登录速度优化笔记
    MP4视频流base64数据转成Blob对象
    使用Vue+ElementUI实现前端分页
    JS端实现图片、视频时直接下载而不是打开预览
    Dynamic CRM工作流流程实战
    Dynamic CRM插件调试与单元测试
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1991258.html
Copyright © 2011-2022 走看看