2014-07-19 42 views
5

Używam http://datatables.net/extensions/tabletools/ na moim lokalnym hoście (serwerze wampirów). Działa to dobrze, ale kiedy umieszczam ten sam kod na moim serwerze online, to nie działa.jQuery dataTables - TableTools nie działa

Używam cały najnowszą wersję DataTables

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

Po pierwsze nie było kliknięcie na kopii, PDF, CSV, przycisk xls. Dlatego nauczyłem mojej ścieżki lub swf nie działa, dlatego zastąpiłem link linkiem online. Stąd teraz dostaję kliknięcie, ale kiedy klikam przycisk Kopiuj daje mi wiadomość ... ale kiedy przeszłam w swoim notatniku, to daje mi "puste". Również mój pdf, csv, xlsx nie działa. Tylko Print działa idealnie. Proszę dać mi znać, jaki jest problem, ponieważ w moim localhost wszystko działa dobrze. Tworzy problemy na moim serwerze online.

+0

gdy 'pdf',' csv' i 'xlsx' nie działa, to zdecydowanie wskazuje, że' .swf' nie jest załadowany. Print jest funkcją "natywną" w TableTools; 'pdf',' csv' i 'xlsx' są oparte na' .swf'. – davidkonrad

Odpowiedz

13

Jestem prawie pewny, że datatables.net aktywnie blokuje korzystanie z .swf. Allan Jardine skomentował bezpośredniego wykorzystania .swf plików several times:

datatables.net nie jest serwerem CDN i nie powinny być stosowane jako takie. Nie jest on przeznaczony do tego celu i mogę dodać przepustnicę do hotlinkowania w przyszłości w , ponieważ wykorzystywana jest ogromna przepustowość i powoduje niepotrzebne obciążenie . Osiągniesz znacznie lepszą wydajność dzięki właściwemu CDN z lub nawet lokalnie hostowanemu plikowi.

Jednak wraz z wprowadzeniem 1.10.x nie jest ostatecznie ustalone prawdziwy serwer CDN, w tym wszystkich zasobów TableTools -> http: // cdn .datatables.net/tabletools/2.2.2/

więc zastąpić sSwfPath z:

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

+0

@ davidkonrad: dziękuję za odpowiedź i pomoc .. po zastąpieniu linku powyższym linkiem .. teraz działa ... ale kiedy pobieram plik Pdf ..tylko mój pierwszy wiersz jest widziany z 4 rekordów .. również po stronie tam jest widoczne słowo select ... gdzie jak inne to CSV, execl działają poprawnie .. notki pobierania są widoczne właściwe ... – user3209031

+0

również po pierwsze wszystko działało dobrze w moim localhost: ale po zastąpieniu powyższym linkiem ..same .. plik PDF jest pobierany, ale zapisy nie są prawidłowo wyświetlane. Również jest słowo "SELECT" po stronie – user3209031

+0

@ user3209031, to musi być problem z kodem. Trudno powiedzieć bez wyświetlenia kodu lub strony internetowej? Być może zamieścić nowe pytanie z _all_ odpowiednim kodem? Brzmi bardzo tajemniczo z SELECT na boku :) – davidkonrad

0

Ponieważ chcę pokazać właściwy format kodu stąd pisać jako nową odpowiedź

@ DAVIDKONRAD: mam wiedzieć, kiedy usunąć columnDefs z poniżej kod wtedy moja PDF pokazuje odpowiednie zapisy ... btw mój CSV, Excel, druk diplay właściwego rekordu z columnDefs .. tylko pdf nie jest wyświetlana Prawidłowa rekord z „columnDefs”

i poznałem słowo, które jest postrzegane „wybierz” jest z tego powodu tylko ..as mam użytkowania rozwijaną w 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

mi chodziło należy go zakładać jako zupełnie nowe pytanie, ponieważ w rzeczywistości jest to nowe pytanie! :) Tak czy inaczej. Problem polega na tym, że będziesz musiał renderować dane podczas tworzenia pliku PDF. W przeciwnym razie otrzymasz po prostu dane wyjściowe $ (element) .text(), w tym opcję select i jej opcje. Tak:

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

zobaczyć swój kod tutaj (tak blisko mogę dostać) ->. Jednak nadal występuje problem spowodowany renderowaniem mRender, więc pozycje kolumn są kłopotliwe. Łamie wewnętrzną strukturę. Dlaczego dodajesz dodatkowe <td> .. </td>? Ale nie mam czasu, aby w to zagłębić się w tej chwili.

+0

dziękuję bardzo .. tak działa ale ..kolor coloumn jest miss match .. sprawdzi to ... dzięki – user3209031