I am trying to export grid to PDF and I want it to export all pages. In my grid I have 2 pages but pdf only shows first page. In the grid dataSource I have set ServerOperation(true) and what happens is that the read action is called 3 times, first time the request is marked page 1, second time the request is marked page 2 and then the third time the request is marked page 1 again and therefore it only exports the first page.
Here's my grid:
@(Html.Kendo().Grid<MembersViewModel>()
.Name("participantsGrid")
.Columns(columns =>
{
columns.Bound(c => c.ID).Visible(false);
columns.Template(@<text></text>).ClientTemplate(@"<div class=''>"
+ "# if (HasAllergies) { # <i id='al-#=ID#' class=\"fa fa-exclamation-circle allergies\" data-tooltiptext='#=Allergies#' aria-hidden=\"true\"></i> # } #"
+ "</div>").Width(20).HtmlAttributes(new
{
style = "padding-left:5px;padding-right:5px"
});
columns.Bound(c => c.NAME).Title(translator.Translate("NAME"));
columns.Bound(c => c.SSN).Title(translator.Translate("SSN"));
columns.Bound(c => c.GENDER).Title(translator.Translate("GENDER"));
columns.Bound(c => c.AGE).Title(translator.Translate("AGE"));
columns.Template(@<text></text>).ClientTemplate(@"<div class='dropdown'>"
+ "<a data-toggle='dropdown' class='primarycolor' href=''><i class='fa fa-ellipsis-v fa-2x'></i></a>"
+ "<ul class='dropdown-menu dm-icon pull-right'>"
+ "<li><a class='k-button-icontext k-grid-edit' href='" + Url.Action("Edit", "Members") + "/#=ID#'>" + translator.Translate("EDIT") + "</a></li>"
+ "<li><a class='k-button-icontext' href='##'>" + translator.Translate("REGISTER_CLASS") + "</a></li>"
+ "</ul>"
+ "</div>").HtmlAttributes(new
{
@class = "dropdown-gridcell"
}).Width(20);
})
.ToolBar(toolbar =>
{
toolbar.Template(@<text>
<a class="k-button k-button-icontext k-grid-add" href="@Url.Action("", "")"><i class="fa fa-plus" aria-hidden="true"></i> @translator.Translate("ADD") @translator.Translate("PARTICIPANT_TGF")</a>
<a class="k-button k-button-icontext k-grid-excel" href="#"><span class="k-button-icontext k-i-excel"></span>Excel</a>
<a class="k-button k-button-icontext k-grid-pdf" href="#"><span class="k-icon k-i-pdf"></span>PDF</a>
</text>);
toolbar.Excel();
toolbar.Pdf();
})
.Pdf(pdf => pdf
.AllPages()
.AvoidLinks()
.PaperSize("A4")
.Scale(0.8)
.Margin("2cm", "1cm", "1cm", "1cm")
.Landscape()
.RepeatHeaders()
.TemplateId("page-template")
.FileName(string.Format("{0}_{1}.pdf", User.Identity.GetOrgName().Replace(' ', '_'), translator.Translate("PARTICIPANTS_PDFNAME")))
.ProxyURL(Url.Action("Pdf_Export_Save", "PDF"))
)
.Groupable(g => g.Messages(m => m.Empty(translator.Translate("DRAG_DROP_TO_ZONE_GROUPING"))))
.Sortable()
.Pageable()
.Filterable(filterable => filterable
.Extra(false)
.Messages(m => m.Clear(translator.Translate("CLEAR")).Filter(translator.Translate("FILTER")))
.Operators(operators => operators
.ForString(str => str.Clear()
.Contains(translator.Translate("CONTAINS"))
.StartsWith(translator.Translate("STARTS_WITH"))
)
)
)
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(2)
.ServerOperation(true)
.Read(read => read.Action("Participants_Read", "Participants").Data("additionalData"))
.Model(model => model.Id(mid => mid.ID))
.Create(update => update.Action("Participants_Create", "Participants"))
)
)
Here's my template:
<script type="x/kendo-template" id="page-template">
<div class="page-template">
<div class="header">
<div style="float: right">Page #: pageNum # of #: totalPages #</div>
</div>
<div class="watermark">SAVI VEFKERFI</div>
<div class="footer">
Page #: pageNum # of #: totalPages #
</div>
</div>
</script>
And here's my controller action:
public ActionResult Participants_Read([DataSourceRequest] DataSourceRequest request, int? did, int? sdid, int? cid, int? sid)
{
List<MembersViewModel> list = memberRepository.GetParticipantMembersList(this.saviSite.OrgId, did, sdid, cid, sid);
return Json(list.ToDataSourceResult(request));
}
Can you tell me what I'm doing wrong here? Thanks!