You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码实现四个Kendo Grid导出至单个PDF文件?

将四个Kendo Grid导出到单个PDF的解决方案

没问题!我帮你调整代码,把四个Kendo Grid都导出到同一个PDF文件里。你原来的代码已经获取了四个Grid的实例,但没把后两个的内容合并到最终文档中,这里给你两种实现方式:

方式一:基于原有链式逻辑扩展

这种方式在你现有代码的基础上,逐步添加第三个和第四个Grid的合并步骤,逻辑和你原来处理前两个Grid一致:

$('#export').on('click', function() {
    var grid1 = $('#innerGrid').data('kendoGrid');
    var grid2 = $('#developeesGrid').data('kendoGrid');
    var grid3 = $('#innerdeveloperGrid').data('kendoGrid');
    var grid4 = $('#innerVenueGrid').data('kendoGrid');
    var progress = $.Deferred();

    grid1._drawPDF(progress)
        .then(function(firstGrid) {
            // 合并第二个Grid的内容
            return grid2._drawPDF(progress).then(function(secondGrid) {
                secondGrid.children.forEach(function(x) {
                    firstGrid.children.push(x);
                });
                return firstGrid;
            });
        })
        .then(function(combinedGrid) {
            // 合并第三个Grid的内容
            return grid3._drawPDF(progress).then(function(thirdGrid) {
                thirdGrid.children.forEach(function(x) {
                    combinedGrid.children.push(x);
                });
                return combinedGrid;
            });
        })
        .then(function(combinedGrid) {
            // 合并第四个Grid的内容
            return grid4._drawPDF(progress).then(function(fourthGrid) {
                fourthGrid.children.forEach(function(x) {
                    combinedGrid.children.push(x);
                });
                return combinedGrid;
            });
        })
        .then(function(finalCombinedGrid) {
            // 导出合并后的PDF
            return kendo.drawing.exportPDF(finalCombinedGrid, { multiPage: true });
        })
        .done(function(dataURI) {
            kendo.saveAs({
                dataURI: dataURI,
                fileName: pdfFilesNames
            });
            progress.resolve();
        });
});

方式二:并行绘制优化(推荐)

如果四个Grid之间没有依赖关系,用Promise.all并行绘制所有Grid的PDF内容,效率更高,代码也更简洁,避免深层嵌套:

$('#export').on('click', function() {
    var grid1 = $('#innerGrid').data('kendoGrid');
    var grid2 = $('#developeesGrid').data('kendoGrid');
    var grid3 = $('#innerdeveloperGrid').data('kendoGrid');
    var grid4 = $('#innerVenueGrid').data('kendoGrid');
    var progress = $.Deferred();

    // 同时触发四个Grid的PDF绘制
    Promise.all([
        grid1._drawPDF(progress),
        grid2._drawPDF(progress),
        grid3._drawPDF(progress),
        grid4._drawPDF(progress)
    ]).then(function(allGrids) {
        // 以第一个Grid为基础,合并其他所有Grid的内容
        var finalGrid = allGrids[0];
        allGrids.slice(1).forEach(function(grid) {
            grid.children.forEach(function(childElement) {
                finalGrid.children.push(childElement);
            });
        });
        // 导出最终合并的PDF
        return kendo.drawing.exportPDF(finalGrid, { multiPage: true });
    }).done(function(dataURI) {
        kendo.saveAs({
            dataURI: dataURI,
            fileName: pdfFilesNames
        });
        progress.resolve();
    });
});

注意事项:

  • 确保pdfFilesNames变量已经提前定义,比如设置为"Grid_Export.pdf"之类的具体文件名
  • 确认四个Grid对应的DOM元素(#innerGrid、#developeesGrid等)都已正确初始化Kendo Grid组件

内容的提问来源于stack exchange,提问作者sachin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:39:02