2016-02-04 40 views
7

Sto provando a creare una griglia di kendo con esportazione excel. I miei dati sono mostrati esattamente come lo voglio e la griglia funziona bene. Tuttavia, la funzione saveAsExcel attiva l'evento excelExport, ma non viene creato alcun file. Lo stesso problema con l'esportazione pdf. Ecco le mie opzioni della griglia:Griglia UI Kendo esportazione esportazione excel e pdf, nessun file creato

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"); 

Questa Ajax è chiamato ogni volta che i parametri di ricerca per i dati vengono modificati. Dove aggiorno l'origine dati.

 $.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(); 
      } 

     }); 

L'output dal log della mia console è.

Firing Export. 

Un oggetto del foglio di lavoro.

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

e matrice e con questi oggetti per ogni riga della griglia:

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" 

Ho l'ultima versione di kendo, sto caricando jszip. Lo sto eseguendo sull'ultima versione di Chrome. Ho provato tutti i tipi di variazioni di questo codice che mi viene in mente, inclusa la rimozione del mio schema, inizializzando nuovamente il kendo ogni volta nel callback.

Qualcuno ha idea del perché questo non avrebbe funzionato?

Ogni esempio su questo posso trovare renderlo super semplice, basta creare la griglia e chiamare l'esportazione ... Quindi devo trascurare qualcosa.

Sono grato per qualsiasi idea al riguardo.

Grazie.

+0

La tua implementazione sembra ok. Sei sicuro che jszip sia caricato prima del kendo? –

+0

Ho copiato il tuo javascript e funziona perfettamente (con un file vuoto). Questo potrebbe essere un problema con le autorizzazioni? I miei file sono scritti nella mia cartella dei download. – Fruitbat

+0

@The_Black_Smurf Sì, è già stato caricato. Avevo un limite di tempo quindi ho finito per scrivere un'esportazione CSV della griglia. Ma torneremo su questo e proveremo a scoprire cosa lo ha causato. – Svennisen

risposta

0

Ho qualche suggerimento successivo.

  1. È possibile aggiungere il file di script kendo deflate pako nel codice e provare.
  2. Quindi rimuovere l'evento di esportazione pdf e provare semplicemente ad esportare un pdf con la funzionalità predefinita della barra degli strumenti. Verificare se funziona o meno.
  3. tenta di aggiungere una chiamata ajax di origine dati con un'opzione di griglia utilizzando la tecnica di trasporto kendo con metodo di lettura. http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-transport