2014-07-19 17 views
5

Sto utilizzando http://datatables.net/extensions/tabletools/ nel mio host locale (server wamp). Funziona bene, ma quando ho messo lo stesso codice sul mio server online, non funziona.jQuery dataTables - TableTools non funziona

Sto usando tutte ultima versione di DataTable

tableTools: { 
    "sSwfPath": "https://datatables.net/release-datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf", 
    "sRowSelect": "os", 
    "sRowSelector": 'td:first-child', 
    // "aButtons": [ "copy", "csv", "xls","pdf","print","select_all", "select_none" ] 
    "aButtons": [ 
     "copy", 
     "print", { 
      "sExtends": "collection", 
      "sButtonText": "Save", // button name 
      // "aButtons": [ "csv", "xls", "pdf" ] 
      "aButtons": [ 
       "csv", 
       "xls", { 
        "sExtends": "pdf", 
        "sPdfOrientation": "landscape", 
        "sPdfMessage": "List of product." 
       }, 
       "print" 
      ] 
     } 
    ] 
}  

In primo luogo non vi era alcuna click su una copia, pdf, csv, xls tasto. Quindi ho insegnato il mio percorso o swf non funziona, quindi ho sostituito il link con il collegamento online. Quindi ora ottengo clic, ma quando faccio clic sul pulsante Copia mi dà un messaggio ... ma quando ho passato nel mio blocco note mi sta dando "vuoto". Anche il mio pdf, csv, xlsx non funziona. Solo la stampa funziona perfettamente. Per favore fatemi sapere qual è il problema come nel mio localhost tutto sta funzionando bene. Sta creando problemi nel mio server online.

+0

quando 'pdf',' csv' e 'xlsx' non funzionano, indica fortemente che' .swf' non è caricato. La stampa è una funzione "nativa" in TableTools; 'pdf',' csv' e 'xlsx' sono basati su' .swf'. – davidkonrad

risposta

13

Sono quasi sicuro che datatables.net sta bloccando attivamente l'uso di .swf. Allan Jardine ha commentato l'uso diretto dei file .swfseveral times:

datatables.net non è un server CDN e non deve essere usato come tale. È stato progettato per essere e potrei aggiungere la limitazione per hotlinking in futuro in quanto viene utilizzata un'enorme quantità di larghezza di banda che causa il caricamento non necessario . Otterrai prestazioni decisamente migliori utilizzando un CDN corretto o persino un file ospitato localmente.

Tuttavia, con l'introduzione di 1.10.x c'è finalmente stabilito un vero e proprio server di CDN, tra cui tutte le risorse TableTools -> http: // cdn .datatables.net/TableTools/2.2.2/

Quindi sostituire la sSwfPath con:

http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf

+0

@ davidkonrad: grazie per la risposta e l'aiuto .. dopo aver sostituito il link con sopra il link .. ora funziona ... ma quando scarico il file Pdf ..solo la mia prima riga è vista da 4 record ... anche qui di fianco è la parola vista selezionare ... dove come altri thats csv, execl funzionano correttamente .. significa che i record di download sono visti correttamente ... – user3209031

+0

anche in primo luogo tutto stava funzionando bene nel mio localhost: ma dopo la sostituzione con il link ..same .. il file pdf viene scaricato ma i record non vengono visualizzati correttamente .. anche la parola "SELECT" al lato – user3209031

+0

@ user3209031, questo deve essere un problema con il codice. Difficile dire senza vedere il codice o la pagina web? Magari postare una nuova domanda con _all_ il codice rilevante? Sembra molto misterioso con una SELEZIONA sul lato :) – davidkonrad

0

come voglio mostrare formato del codice corretto, quindi, posto come nuova risposta

@ DAVIDKONRAD: ho avuto modo di conoscere quando rimuovo columnDefs dal basso codice allora il mio PDF mostra record corretti ... btw il mio csv, excel, stampa diplay corretta registrazione con columnDefs .. solo pdf non mostra corretta registrazione con "columnDefs"

e ho avuto modo di conoscere la parola che si vede "Select" è a causa di che solo ..come ho uso discesa nella columndefs

dt = $('#example').DataTable({ 
      "dom": '<"clear">T<"clear"><"clear">lfrtip', 
      "pagingType": "full_numbers", 
      "scrollY": "440px", 
      "scrollX": "100%", 
      "scrollCollapse": true, 
      "bProcessing": true, 
      "bServerSide": true, 
      "sAjaxSource": "includes/db/server_processing.php", 
      "deferRender": true, 
      "aaSorting":[[0, "desc"]], 
      "aoColumns": [ 
          { className: "center", }, 
          { className: "center", }, 
          { className: "center", }, 
          { className: "center", }, 
          { className: "center", }, 
          { className: "center", }, 
          { className: "center", }, 
           ], 
      "columnDefs": [ 

          { 
           "aTargets":[7], 
           "fnCreatedCell": function(nTd, sData, oData, iRow, iCol) 
           { 
           $(nTd).css('text-align', 'center'); 
           }, 
           "mData": null, 
           "mRender": function(data, type, full) {  
              return '<td><select id="dynamic_select_'+full[0]+'" name="dynamic_select_'+full[0]+'">\n\ 
               <option id="0" value="">Select</option/>\n\ 
               <option id="1_'+full[0]+'" value="test.php?id='+full[0]+'">10</option/>\n\ 
               <option id="2_'+full[0]+'" value="test2.php?id='+full[0]+'">12</option/>\n\ 
               <option id="3_'+full[0]+'" value="test3.php?id='+full[0]+'">13</option/>\n\ 
                </select></td>'; 
              //return '<button>Click!</button>'; 

           } 

           }, 
           { 
           "aTargets":[8], 
           "fnCreatedCell": function(nTd, sData, oData, iRow, iCol) 
           { 
           $(nTd).css('text-align', 'center'); 
           }, 
           "mData": null, 
           "mRender": function(data, type, full){ 
           //return '<button>Click!</button>'; 
           return '<div id="container"><a href="javascript: void(0);" class="click_'+full[0]+'">Click</a></div>'; 
           } 
           } 
          ] 
     }); 
4

io intendevo si dovrebbe post it come una domanda completamente nuova, poiché in realtà è una nuova domanda! :) Comunque. Il problema è che dovrai eseguire il rendering dei dati quando produci un PDF. Altrimenti otterrete solo un output $ (elemento) .text(), inclusa la selezione e le sue opzioni. Come questo:

"aButtons": [ 
     "copy", 
     "csv", 
     "xls", 
     { "sExtends": "pdf", 
     "fnCellRender": function (sValue, iColumn, nTr, iDataIndex) { 
      //extract the value of the select 
      if (iColumn === 7) { 
       var val=$(sValue).find('select').val(); 
       return (val!=='') ? val : 'not set'; 
      } 
      //create a dummy text for the HTML-link 
      if (iColumn === 8) { 
       return 'click'; 
      } 
      return sValue; 
     } 
     }, 
     "print", 
     "select_all", 
     "select_none" 
    ] 

vedere qui il codice (il più vicino che posso ottenere) ->. Tuttavia, si verifica ancora un problema causato dal rendering di mRender, quindi le posizioni della colonna stanno compromettendo. Rompe la struttura interna <table>. Perché stai inserendo ulteriori <td> .. </td>? Ma non ho tempo per esaminarlo al momento.

+0

grazie mille ... sì, funziona, ma ..qualcuno di colonna è partita mancante .. lo verificherò ... grazie – user3209031