Rdlc子報表的動態添加

來源:互聯網
上載者:User

大概注意事項:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.