单个RDLC报告查看器

时间:2016-05-09 06:45:25

标签: c# asp.net rdlc visual-studio-2017

我需要在单个RDLC报告查看器中显示BULK报告。我使用带有动态图像的RDLC报告生成单个报告。但是现在我需要生成相同的报告,但是数据/计算会有所不同。单个报告生成的代码如下。

rdlcTax.Visible = true;
rdlcTax.Reset();
rdlcTax.ProcessingMode = ProcessingMode.Local;
rdlcTax.LocalReport.DisplayName = "Tax" + dt.Rows[0]["NAME"].ToString();
rdlcTax.LocalReport.ReportPath = "Reports/rdlcTaxCertificate.rdlc";
ReportDataSource rds = new ReportDataSource("dsTaxCertificate", dt);
var param = new ReportParameter[] {
          new ReportParameter("fromDate", fromMonth.Replace("-", " ")),
          new ReportParameter("toDate", toMonth.Replace("-", " ")),
          new ReportParameter("rateOfDeduction", rateOfDeduction + "%"),
          new ReportParameter("name", name),
          new ReportParameter("address", address),
          new ReportParameter("refNo", refNo),
          new ReportParameter("issueDate", issueDate),
          new ReportParameter("amount", tdsSum.ToString("N", CultureInfo.InvariantCulture).Split('.')[0]),
          new ReportParameter("amountWord", textInfo.ToTitleCase(int.Parse(tdsSum.ToString()).ToText()) + " Taka Only"),
          new ReportParameter("imagePath", imagePath, true)
};

rdlcTax.LocalReport.EnableExternalImages = true;
rdlcTax.LocalReport.SetParameters(param);
rdlcTax.LocalReport.DataSources.Clear();
rdlcTax.LocalReport.DataSources.Add(rds);
rdlcTax.DataBind();
rdlcTax.LocalReport.Refresh();

我也试过在同一个报表查看器中生成多个报表的循环,但是没有用。报告仅显示最后一个DataTable的数据。代码如下。

rdlcTax.Visible = true;
rdlcTax.Reset();
rdlcTax.ProcessingMode = ProcessingMode.Local;
rdlcTax.LocalReport.DisplayName = "Tax Certificate";
rdlcTax.LocalReport.ReportPath = "Reports/rdlcTaxCertificateBulk.rdlc";
rdlcTax.LocalReport.EnableExternalImages = true;
rdlcTax.LocalReport.DataSources.Clear();
foreach (DataTable dt in ds.Tables)
{
     var name = dt.Rows[0]["NAME"].ToString();
     var address = dt.Rows[0]["ADDRESS"].ToString();
     var refNo = dt.Rows[0]["REFERENCE_NO"].ToString();
     var issueDate = dt.Rows[0]["ISSUE_DATE"].ToString();
     var tdsSum = Math.Round(double.Parse(dt.Compute("Sum(TDS_AMOUNT)", "").ToString()));

     ReportDataSource rds = new ReportDataSource("dsTaxCertificate", dt);
     var param = new ReportParameter[] {
            new ReportParameter("fromDate", fromMonth.Replace("-", " ")),
            new ReportParameter("toDate", toMonth.Replace("-", " ")),
                            new ReportParameter("rateOfDeduction", rateOfDeduction + "%"),
            new ReportParameter("name", name),
            new ReportParameter("address", address),
            new ReportParameter("refNo", refNo),
            new ReportParameter("issueDate", issueDate),
            new ReportParameter("amount", tdsSum.ToString("N", CultureInfo.InvariantCulture).Split('.')[0]),
            new ReportParameter("amountWord", textInfo.ToTitleCase(int.Parse(tdsSum.ToString()).ToText()) + " Taka Only"),
            new ReportParameter("imagePath", imagePath, true)
     };

     rdlcTax.LocalReport.SetParameters(param);
     rdlcTax.LocalReport.DataSources.Clear();
     rdlcTax.LocalReport.DataSources.Add(rds);
     rdlcTax.DataBind();
     rdlcTax.LocalReport.Refresh();
}

在我必须修改以生成多个报告的代码中?

1 个答案:

答案 0 :(得分:0)

批量报告中包含参数的目的是什么?这是基于您的代码片段,以了解要求。

表中的所有列名称是否相同?

foreach (DataTable dt in ds.Tables)
{
****
}