2016-02-04 34 views
7

Próbuję stworzyć siatkę kendo z eksportem programu Excel. Moje dane są wyświetlane dokładnie tak, jak chcę, a siatka działa dobrze. Jednak funkcja saveAsExcel wyzwala zdarzenie excelExport, ale nie jest tworzony żaden plik. Ten sam problem z eksportem pdf. Oto moje opcje grid:Kendo UI eksport eksportu do siatki i eksport pdf, nie utworzono pliku

grid = $("#grid").kendoGrid({ 
     toolbar:["excel","pdf"], 
     height: 500, 
     scrollable: true, 
     groupable: true, 
     sortable: true, 
     filterable: false, 
     excel: { 
      allPages:true, 
      filterable:true 
     }, 
     excelExport: function(e) { 
      console.log('Firing Export'); 
      console.log(e.workbook); 
      console.log(e.data); 
     }, 
     pdfExport: function(e){ 
      console.log('PDF export'); 

     }, 
     columns: [ 
      { field: "date", title: "Time", template: "#= kendo.toString(kendo.parseDate(date), 'MM/dd/yyyy') #", width: '120px'}, 
      { field: "customer", title: "Customer" }, 
      { field: "amount", title: "Total", format: "{0:c}", width: '70px', aggregates: ["sum"]}, 
      { field: "paid_with", title: "Payment", width: '130px'}, 
      { field: "source", title: "Source" }, 
      { field: "sale_location", title: "Sale Location" } 
     ] 
    }).data("kendoGrid"); 

Ten ajax nazywa ilekroć parametry wyszukiwania danych jest zmieniony. Gdzie odświeżam źródło danych.

 $.ajax({ 
      'url':'/POS/ajax/loadTransactionsDetailsForDay.php', 
      'data':{ 
       filters 
      }, 
      'type':'GET', 
      'dataType':'json', 
      'success':function(response) { 
       var dataSource = new kendo.data.DataSource({ 
        data: response.data.invoices, 
        pageSize: 100000, 
        schema: { 
         model: { 
          fields: { 
           date: {type: "string"}, 
           customer: { type: "string" }, 
           amount: { type: "number" }, 
           paid_with: {type: "string"}, 
           source: {type:"string"}, 
           sale_location: {type:"string" } 
          } 
         } 
        } 
       }); 
       grid.setDataSource(dataSource); 
       grid.refresh(); 
      } 

     }); 

Dane wyjściowe z mojego dziennika konsoli.

Firing Export. 

Obiekt arkusza roboczego.

Object {sheets: Array[1]}sheets: Array[1]0: Objectlength: 1__proto__: Array[0]__proto__: Object 

i i tablica z tych obiektów dla każdego wiersza w siatce:

0: o 
    _events: Object 
    _handlers: Object 
    amount: 40.45 
    customer: "customer 1" 
    date: "2015-11-25T00:00:00-08:00" 
    dirty: false 
    employee: 23 
    paid_with: "Check" 
    parent:() 
    sale_location: "Main" 
    source: "POS" 
    uid: "70b2ba9c-15f7-4ac3-bea5-f1f2e3c800d3" 

Mam najnowszą wersję kendo, wczytuję jszip. Używam go w najnowszej wersji chrome. Próbowałem różnych odmian tego kodu, które mogę wymyślić, włączając w to usunięcie mojego schematu, inicjowanie kendo od nowa za każdym razem w wywołaniu zwrotnym.

Ktoś ma pojęcie, dlaczego to nie zadziała?

Każdy przykład na tej stronie może sprawić, że będzie wyglądać super prosto, po prostu utworzyć siatkę i wywołać eksport ... Więc musiałem coś przeoczyć.

Jestem wdzięczny za wszelkie pomysły na ten temat.

Dzięki.

+0

Twoje wdrożenie wydaje się być w porządku. Czy na pewno jszip jest ładowany przed Kendo? –

+0

Skopiowałem twój javascript i działa dobrze (z pustym plikiem). Czy to może być problem z uprawnieniami? Moje pliki są zapisywane w folderze moich plików do pobrania. – Fruitbat

+0

@ The_Black_Smurf Tak, jest załadowany wcześniej. Miałem limit czasu, więc napisałem zamiast tego eksport CSV siatki. Ale wrócę do tego i spróbuję dowiedzieć się, co go spowodowało. – Svennisen

Odpowiedz

0

Mam kilka następujących sugestii.

  1. Czy możesz dodać plik skryptu pako kendo do swojego kodu i spróbować.
  2. Następnie usuń wydarzenie eksportu pdf i po prostu spróbuj wyeksportować plik PDF z domyślną funkcjonalnością paska narzędziowego. Sprawdź, czy działa, czy nie.
  3. spróbuj dodać wywołanie ajax z użyciem źródła danych w opcji siatki za pomocą techniki kendo-transport z metodą odczytu. http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-transport