Webgrid在MVC应用程序中使用Rotativa导出为PDF

时间:2016-04-13 14:02:53

标签: asp.net-mvc webgrid rotativa

我使用Rotativa库将包含100条记录的Webgrid导出为PDF。 我能够成功地将数据导出到PDF,但问题是因为网格包含这么多记录,所以pdf在每个页面上都有列标题。 因此,列标题与PDF的每个页面中的列内容重叠。 我希望列标题只在pdf的第一页上,而不是在每一页上。

partialview(_Report.cshtml)如下:

<div id="reportDetailGrid">
        @grid2.GetHtml(
                    tableStyle: "webgrid-table",
             headerStyle: "webgrid-header",
             footerStyle: "webgrid-footer",
             alternatingRowStyle: "webgrid-alternating-row",
             selectedRowStyle: "webgrid-selected-row",
             rowStyle: "webgrid-row-style",
             mode: WebGridPagerModes.All,
            columns: grid2.Columns(
                      grid2.Column("PropertyCode", "PropertyCode", format: @<text>@item.PropertyCode</text>),
                      grid2.Column("TransactionTime", "TransactionTime", format: @<text>@item.TransactionTime</text>),
                      grid2.Column("ConfirmationNo", "ConfirmationNo",format: @<text>@item.ConfirmationNo</text>),
                    grid2.Column("AlertCode", "AlertCode",format: @<text>@item.AlertCode</text>),
                    grid2.Column("ErrorMessage", "ErrorMessage",format: @<text>@item.ErrorMessage</text>)
)
)

    </div>

控制器代码是:

public ActionResult DownloadReportPDF()
    {
      var model = GetReportsViewModelData();
        //Code to get content
        return new Rotativa.PartialViewAsPdf("_Report", model) { FileName = "DigitalDashboardReport.pdf" };
    }

以下是PDF第二页的屏幕截图:

header on page 2 of pdf

它发生在PDF的每一页上。

任何人都可以帮助我在第一页上而不是在PDF的每一页上都有列标题,或者是否有任何其他方式来设置要导出为PDF的内容的样式。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我已设法通过在局部视图中添加以下样式代码来解决此问题:

thead { display: table-header-group; } 
tfoot { display: table-row-group; } 
tr { page-break-inside: avoid; }