2016-02-22 55 views
1

我正在測試網格,並試圖將它導出到PDF和XLS。使用Excel時,它幾乎是直截了當的,但當我試圖按照demo上提供的步驟,它不起作用。當我點擊導出按鈕時,進度條會加載,當它結束時什麼也沒有發生,這個動作永遠不會被執行。Telerik MVC grid PDF導出不起作用

這是我的看法:

@model IEnumerable<ViewModels.TestViewModel> 

@{ 
    ViewBag.Title = "Tests KendoUI"; 
} 

<script src="~/Scripts/lib/jszip.min.js" type="text/javascript"></script> 
<script src="~/Scripts/lib/pako.min.js" type="text/javascript"></script> 

<style> 
    /* 
       Use the DejaVu Sans font for display and embedding in the PDF file. 
       The standard PDF fonts have no support for Unicode characters. 
      */ 
    .k-grid { 
     font-family: "DejaVu Sans", "Arial", sans-serif; 
    } 

    /* Hide the Grid header and pager during export */ 
    .k-pdf-export .k-grid-toolbar, 
    .k-pdf-export .k-pager-wrap, 
    .k-pdf-export a.k-button.k-button-icontext, 
    .k-pdf-export .k-filter-row, 
    .k-pdf-export .k-grouping-header, 
    .k-pdf-export .k-grid tr td:last-child { 
     display: none !important; 
    } 
</style> 

@(Html.Kendo().Grid(Model) 
     .Name("grid") 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .Read(read => read.Action("Products_Read", "Home")) 
      .Aggregates(aggregates => aggregates.Add(p => p.oper_monto).Sum()) 
     ) 
     .Columns(columns => 
     { 
     columns.Bound(p => p.oper_numero).Hidden(true); 
     columns.Bound(p => p.oper_monto).ClientFooterTemplate("Total: #=sum#"); 
     columns.Bound(p => p.cpto_codigo); 
     }) 
     .Excel(excel => excel 
     .FileName("Reporte.xlsx") 
     .Filterable(true) 
     .AllPages(true) 
     .ProxyURL(Url.Action("Excel_Export_Save", "Home")) 
    ) 
     .Pdf(pdf => pdf 
      .AllPages() 
      .FileName("Reporte.pdf") 
      .ProxyURL(Url.Action("Pdf_Export_Save", "Home")) 
     ) 
     .ColumnMenu() 
     .ToolBar(t => t.Excel().Text("Exportar a Excel")) 
     .ToolBar(t => t.Pdf().Text("Exportar a PDF")) 
     .ToolBar(toolBar => 
        toolBar.Custom() 
         .Text("Guardar Preferencias") 
         .HtmlAttributes(new { id = "save" }) 
    ) 
     .ToolBar(toolBar => 
        toolBar.Custom() 
         .Text("Cargar Preferencias") 
         .HtmlAttributes(new { id = "load" }) 
    )      
     .Filterable(ftb => ftb.Mode(GridFilterMode.Menu)) 
) 

<script> 

    $(function() { 
     var grid = $("#grid").data("kendoGrid"); 

     $("#save").click(function (e) { 
      e.preventDefault(); 
      localStorage["kendo-grid-options"] = kendo.stringify(grid.getOptions()); 
     }); 

     $("#load").click(function (e) { 
      e.preventDefault(); 
      var options = localStorage["kendo-grid-options"]; 
      if (options) { 
       grid.setOptions(JSON.parse(options)); 
      } 
     }); 
    }); 
</script> 

這是我的控制器操作:

[HttpPost] 
     public ActionResult Pdf_Export_Save(string contentType, string base64, string fileName) 
     { 
      var fileContents = Convert.FromBase64String(base64); 

      return File(fileContents, contentType, fileName); 
     } 

在此先感謝。

+0

沒有JavaScript錯誤或類似的東西? – Ageonix

+0

是的,我已經檢查了控制檯,並在生成文件時需要壓縮數據的pako文件中出現以下錯誤:「Uncaught SyntaxError:Unexpected token <」。問題是我沒有修改原始文件,所以我不知道該怎麼做。除了再次重新下載文件,我還能做些什麼? (已經做到了) – Rambo3

回答

0

嘛,導出功能使用了名爲PAKO,你可以找到here JS,但是如果你右鍵點擊並下載文件,它會失敗,反正下載,但它裏面的代碼不會是必要的JavaScript 。所以,我不得不輸入文件,複製所有文本並將其粘貼到我的本地文件中。它像一個魅力。