【发布时间】:2017-05-09 09:48:27
【问题描述】:
我有一个希望导出其内容的网格控件。初始化时,pageSize 属性设置为 10 个项目,但是我想在exportToPDF 期间增加每页的项目数。
我尝试在执行导出之前修改dataSource 的pageSize,但这似乎对最终产品没有影响。
var grid = $("#grid").data("kendoGrid");
var filter = grid.dataSource.filter;
grid.dataSource.query({
filter: filter,
pageSize: 20, // has no effect on the exported PDF
page: 1,
group: [{
field: "groupField1",
dir: "asc"
}, {
field: "groupField2",
dir: "asc"
}, {
field: "groupField3",
dir: "asc"
}]
});
var progress = $.Deferred();
grid._drawPDF(progress)
.then(function (root) {
return kendo.drawing.exportPDF(root, { forcePageBreak: ".page-break", multiPage: true });
})
.done(function (dataURI) {
// ... do some manual manipulation of dataURI
kendo.saveAs({
dataURI: manipualtedDataURI
});
progress.resolve();
我是否遗漏了什么,以便在 PDF 导出的每一页上显示更多项目?
编辑
将我的网格定义包含在以下答案建议的 pdfExport 函数中(永远不会被调用):
var grid = $("#reportGrid").kendoGrid({
pdf: {
allPages: true,
avoidLinks: true,
repeatHeaders: true,
template: kendo.template($("#page-template").html()),
scale: 0.7,
margin: { top: "2.5cm", right: "1cm", bottom: "1.5cm", left: "1cm" },
paperSize: "A4",
landscape: true
},
// *this function is not getting called*
pdfExport: function(e) {
e.sender.dataSource.pageSize(10);
e.promise.done(function() {
e.sender.dataSource.pageSize(20);
});
},
toolbar: kendo.template($("#template").html()),
...
});
注意:模板用于在 PDF 导出的每一页上包含页眉/页脚。
另一个注意事项:“手动操作 dataURI”包括到服务器执行与另一个 PDF 文件的合并,所以我不能通过网格使用默认导出:(
编辑 2
我已经扩展了@R.K.Saini 的回答中的Dojo 示例,以使用我需要生成PDF 导出的方法(根据原始帖子)。
sn-p 记录正在导出的网格的 URI 以及何时调用 pdfExport 函数。如您所见,当使用内置网格“导出为 PDF”按钮时,pdfExport 功能会被触发,但当使用网格下方的附加按钮时,则不会。
【问题讨论】:
标签: kendo-ui kendo-grid export-to-pdf