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

时间:2015-01-21 09:22:25

标签: kendo-ui telerik kendo-grid

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

提前致谢。

1 个答案:

答案 0 :(得分:3)

您有两种选择:

  1. 使用要导出为PDF的列定义第二个网格,并在要求导出时实际导出第二个。两个网格都应该共享数据源,因此过滤,订单......将被共享。
  2. 拦截在生成PDF之前触发的pdfExport事件,并使用showColumnhideColumn方法隐藏/显示列。
  3. 以下代码显示了第二种方法(尽管我首先是个人偏好)。您会在点击导出按钮之前看到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>