2014-07-19 15 views
5

Ich verwende http://datatables.net/extensions/tabletools/ in meinem lokalen Host (WAMP-Server). Es funktioniert gut, aber wenn ich den gleichen Code auf meinen Online-Server setze, funktioniert es nicht.jQuery dataTables - TableTools funktioniert nicht

Ich bin mit allen aktuellen Version von Datentabellen

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" 
      ] 
     } 
    ] 
}  

Erstens gab es keinen Klick auf Kopie, pdf, csv, xls-Taste. Daher habe ich meinen Weg gelehrt oder swf funktioniert nicht, daher habe ich den Link durch einen Online Link ersetzt. Jetzt bekomme ich einen Klick, aber wenn ich auf "Kopieren" klicke, bekomme ich eine Nachricht ... aber wenn ich in meinem Notizblock vorbei bin, gibt es mir "leer". Auch mein pdf, csv, xlsx funktioniert nicht. Nur Print funktioniert einwandfrei. Bitte lassen Sie mich wissen, was das Problem ist, da in meinem localhost alles gut funktioniert. Es schafft Probleme in meinem Online-Server.

+0

Wenn 'pdf',' csv' und 'xlsx' nicht funktioniert, zeigt dies stark an, dass' .swf' nicht geladen ist. Drucken ist eine "native" Funktion in TableTools; 'pdf',' csv' und 'xlsx' basieren auf dem' .swf'. – davidkonrad

Antwort

13

Ich bin mir ziemlich sicher, dass datatables.net aktiv blockiert für die Verwendung der .swf. Allan Jardine hat die direkte Verwendung der .swf Dateien kommentiert several times:

datatables.net ist kein CDN-Server und sollte nicht als solche verwendet werden. Es ist nicht dazu gedacht, und ich könnte Throttling für Hotlinking in Zukunft hinzufügen, wie eine riesige Menge an Bandbreite verwendet wird und unnötige Last verursacht. Sie erhalten eine viel bessere Leistung von der Verwendung einer CDN oder sogar eine lokal gehostete Datei.

jedoch mit der Einführung von 1.10.x gibt es endlich einen echten CDN-Server hergestellt, einschließlich aller TableTools Ressourcen -> http: // CDN .datatables.net/tabletools/2.2.2/

so ersetzen die sSwfPath mit:

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

+0

@ davidkonrad: Danke für die Antwort und Hilfe .. nach dem Ersetzen des Links mit dem obigen Link .. jetzt funktioniert es ... aber wenn ich PDF-Datei herunterladen ..nur meine erste Reihe ist aus 4 Aufzeichnungen gesehen .. auch auf der Seite dort ist Wort gesehen wählen ... wo als andere das ist csv, execl arbeiten richtig .. Means Download Datensätze sind richtig gesehen ... – user3209031

+0

auch zuerst alles funktionierte gut in meinem localhost: aber nach dem Ersetzen mit oben Link ..same .. pdf-Datei heruntergeladen wird, aber Datensätze nicht richtig gesehen .. auch gibt es Wort "SELECT" auf der Seite – user3209031

+0

@ user3209031, muss dies ein Problem mit dem Code sein. Schwer zu sagen, ohne den Code oder die Webseite zu sehen? Vielleicht eine neue Frage mit _all_ dem entsprechenden Code posten? Klingt sehr mysteriös mit einem SELECT auf der Seite :) – davidkonrad

0

wie ich als neue Antwort schreiben daher die richtige Code-Format angezeigt werden soll

@ DAVIDKONRAD: Ich habe wissen, wann ich columnDefs entfernen von unten Code dann meine PDF ordnungsgemäße Aufzeichnungen zeigt ... btw mein CSV-, Excel-, drucken diplay richtigen Datensatz mit columnDefs .. nur nicht pdf zeigt richtiger Datensatz mit „columnDefs“

und ich habe das Wort kennen, die aus diesem Grunde nur ..als i Verwendung Drop-Down in columndefs gesehen wird, ist „die Option“ habe

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

ich meinte, man sollte es schreiben als eine völlig neue Frage, da es tatsächlich eine neue Frage ist! :) Sowieso. Das Problem ist, dass Sie die Daten beim Erstellen einer PDF-Datei rendern müssen. Andernfalls erhalten Sie nur eine Ausgabe von $ (element) .text(), einschließlich der Auswahl und ihrer Optionen. Wie folgt aus:

"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" 
    ] 

sehen Sie hier Ihren Code (so nah kann ich) ->. Allerdings haben Sie immer noch ein Problem, das durch Ihre mRender Rendering verursacht wird, so dass die Spaltenpositionen verpfuscht sind. Es bricht die interne <table>-Struktur. Warum fügen Sie extra <td> .. </td> ein? Aber haben Sie jetzt keine Zeit, sich das anzusehen.

+0

danke dir so viel .. ja es funktioniert aber .. einige der Column ist Miss Match .. wird es auschecken ... danke – user3209031