MVC中的rdlc在转换为PDF时显示单个记录

时间:2015-09-18 08:33:25

标签: asp.net-mvc pdf rdlc

我有一个customerprofile列表,想要使用rdlc控件转换为PDF。现在它转换为PDF时只显示一条记录。我的控制器动作如下:

 public ActionResult CompetitorProfileListFormat(string id)
        {
            LocalReport lr = new LocalReport();
            string path = Path.Combine(Server.MapPath("~/Report"), "CompetitorProfileReport.rdlc");
            if (System.IO.File.Exists(path))
            {
                lr.ReportPath = path;
            }
            else
            {
                return View(_customerProfileViewModel.CompetitorProfile());
            }

            ReportDataSource rd = new ReportDataSource("DsCompetitorReport", _customerProfileViewModel.CompetitorProfile());
            lr.DataSources.Add(rd);
            lr.Refresh(); 

            string reportType = id;
            string mimeType;
            string encoding;
            string fileNameExtension;

            string deviceInfo =

            "<DeviceInfo>" +
            "  <OutputFormat>" + id + "</OutputFormat>" +
            "  <PageWidth>8.5in</PageWidth>" +
            "  <PageHeight>11in</PageHeight>" +
            "  <MarginTop>0.5in</MarginTop>" +
            "  <MarginLeft>1in</MarginLeft>" +
            "  <MarginRight>1in</MarginRight>" +
            "  <MarginBottom>0.5in</MarginBottom>" +
            "</DeviceInfo>";

            Warning[] warnings;
            string[] streams;
            byte[] renderedBytes;

            renderedBytes = lr.Render(
                reportType,
                deviceInfo,
                out mimeType,
                out encoding,
                out fileNameExtension,
                out streams,
                out warnings);


            return File(renderedBytes, mimeType);
        }

我在视图中列出所有记录并转换为pdf链接如下:

<div style="padding:10px; border:1px solid black">
    <div><a href="@Url.Action("CompetitorProfileListFormat", new { id = "PDF" })"> Get Report PDF</a></div>
    <div><a href="@Url.Action("CompetitorProfileListFormat", new { id = "Excel" })"> Get Report Excel</a></div>
    <div><a href="@Url.Action("CompetitorProfileListFormat", new { id = "Word" })"> Get Report Word</a></div>
    <div><a href="@Url.Action("CompetitorProfileListFormat", new { id = "Image" })"> Get Report Image</a></div>
</div>

现在,当我调试时,我在数据集和报告中获得了5条记录。但是,当我点击转换为pdf时,它只显示一条记录,如图像enter image description here

所示

view contains list of competitor

我的rdlc文件如下所示:rdlc file format

视频显示的动作方法如下:

 public ActionResult CompetitorProfileListRpt()
        {
            return View(_customerProfileViewModel.CompetitorProfile());
        }

我的rdlc文件或其他文件是否有任何调整? 任何人都可以帮我这样做.... 在此先感谢.....

1 个答案:

答案 0 :(得分:2)

根据您发布的RDLC报告的屏幕截图,您似乎将TextBox放在可重复的报告项之外。

您必须使用List项目并将要显示的数据放在其中的每条记录中。因此,将文本框移动到列表Rectangle内。然后,这将根据数据源内部的行数增加/重复。

可以找到一个很棒的教程here,我相信选项#2正是你想要实现的目标。