自定义Kendo Grid中的数据pdf导出

问题描述:

我使用Kendo Grid的内置功能来导出pdf格式的网格数据和excel http://demos.telerik.com/kendo-ui/grid/pdf-export。它对我来说工作得很好。我想定制导出的数据,即添加一些额外的列并删除一些网格列。有什么方法可以使用模板或其他功能来自定义导出数据。自定义Kendo Grid中的数据pdf导出

在此先感谢。

你有两个选择:

  1. 定义与要导出为PDF当问及出口实际上出口的第二列第二格。两个网格应共享数据源,以便过滤,将会共享订单...。
  2. 拦截pdfExport在生成PDF之前触发的事件,并使用showColumnhideColumn方法隐藏/显示列。

以下代码显示了第二种方法(尽管我个人喜欢首先)。在点击导出按钮之前,您会看到EmployeeID,但PDF不包含此列,但包含Country

$(document).ready(function() { 
 
    kendo.pdf.defineFont({ 
 
    "DejaVu Sans"    : "http://cdn.kendostatic.com/2014.3.1314/styles/fonts/DejaVu/DejaVuSans.ttf", 
 
    "DejaVu Sans|Bold"  : "http://cdn.kendostatic.com/2014.3.1314/styles/fonts/DejaVu/DejaVuSans-Bold.ttf", 
 
    "DejaVu Sans|Bold|Italic" : "http://cdn.kendostatic.com/2014.3.1314/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf", 
 
    "DejaVu Sans|Italic"  : "http://cdn.kendostatic.com/2014.3.1314/styles/fonts/DejaVu/DejaVuSans-Oblique.ttf" 
 
    }); 
 
    
 
    var grid = $("#grid").kendoGrid({ 
 
    toolbar: ["pdf"], 
 
    pdf: { 
 
     fileName: "Kendo UI Grid Export.pdf", 
 
     proxyURL: "http://demos.telerik.com/kendo-ui/service/export" 
 
    }, 
 
    dataSource: { 
 
     type: "odata", 
 
     transport: { 
 
     read: { 
 
      url: "http://demos.telerik.com/kendo-ui/service/Northwind.svc/Employees", 
 
     } 
 
     } 
 
    }, 
 
    columns: [ 
 
     { 
 
     title: "Photo", 
 
     width: 140, 
 
     template :'<img src="http://demos.telerik.com/kendo-ui/content/web/Employees/#: data.EmployeeID #.jpg" alt="#: EmployeeID #" />' 
 
     }, 
 
     { field: "FirstName" }, 
 
     { field: "LastName" }, 
 
     { field: "Country", hidden: true }, 
 
     { field: "EmployeeID" } 
 
    ], 
 
    scrollable: false, 
 
    pdfExport: function(e) { 
 
     grid.showColumn(3);    
 
     grid.hideColumn(4);    
 
    } 
 
    }).data("kendoGrid"); 
 
});
<link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.common.min.css" /> 
 
<link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.default.min.css" /> 
 
<script src="http://cdn.kendostatic.com/2014.3.1316/js/jquery.min.js"></script> 
 
<script src="http://cdn.kendostatic.com/2014.3.1316/js/jszip.min.js"></script> 
 
<script src="http://cdn.kendostatic.com/2014.3.1316/js/kendo.all.min.js"></script> 
 
<script src="http://cdn.kendostatic.com/2014.3.1316/js/pako_deflate.min.js"></script> 
 

 
<div id="grid"></div>

+0

Thanks.In第二个选项,单击导出按钮网格change.I不想知道列太happen.For隐藏/显示我使用ColumnMenu列出的列后,这个工具完全没问题。你可以分享你给出的第一个选项的代码片段,我无法跟随。 – pogo22 2015-01-22 06:12:50

+0

我的意图是从网格获取导出数据,其他一些数据源可能是相同的json文件,它是网格源或与网格数据有一些关系的其他json文件。 – pogo22 2015-01-22 06:16:36

+0

你可以发布你的第一个建议的代码示例吗?我更喜欢这一点,因为它不会改变页面上的网格外观。但我使用MVC扩展,所以不太熟悉使用JS网格选项。我想我会想在JS中完全创建一个新的网格(我可以做,不提供jquery选择器吗?),将数据源复制到新的网格,然后调用新网格的saveAsExcel()方法? – SventoryMang 2016-11-04 18:22:39