2014-07-19 87 views
5

我在本地主機(wamp服務器)中使用http://datatables.net/extensions/tabletools/。它工作正常,但是當我將相同的代碼放在我的在線服務器上時,它不起作用。jQuery dataTables - TableTools不能正常工作

我使用所有最新版的數據表

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

的首先有上覆制,PDF,CSV,XLS按鈕沒有點擊。因此,我教我的路徑或swf不工作,因此我用在線鏈接取代了鏈接。因此現在我點擊了,但是當我點擊複製按鈕時,它給了我一個信息......但是當我在記事本中過去時,它給了我「空白」。另外我的pdf,csv,xlsx不起作用。只有打印工作完美。請讓我知道是什麼問題,因爲在我的本地主機都工作正常。它在我的在線服務器中創建問題。

+0

當'pdf','csv'和'xlsx'不工作時,它強烈地表明'.swf'沒有加載。打印是TableTools中的「原生」功能; 'pdf','csv'和'xlsx'基於'.swf'。 – davidkonrad

回答

13

我很確定datatables.net積極阻止使用.swf。艾倫·怡和有評論直接用.swf文件several times的:

datatables.net不是一個CDN服務器,不應該這樣使用。它 是不是被設計爲,並且我可能會在未來使用大量帶寬並導致不必要的負載,從而爲未來的盜鏈添加節流。使用 正確的CDN或甚至本地託管的文件,您將獲得更好的性能。

然而,隨着引進1.10.x有最終建立一個真正的CDN服務器,包括所有的TableTools資源 - > HTTP:// CDN .datatables.net/tabletools/2.2.2/

所以更換sSwfPath有:

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

+0

@ davidkonrad:感謝您的回覆和幫助..更換鏈接後,上面的鏈接..現在它的工作......但是當我下載PDF文件..只有我的第一行是4條記錄中看到..也在那邊是單詞看到選擇...其中,其他多數民衆贊成在csv,execl工作正常..means下載記錄被認爲是適當的... – user3209031

+0

也首先所有工作正常在我的本地主機:但替換後上面的鏈接..same .. pdf文件被下載,但沒有正確看到記錄..同時在 – user3209031

+0

@ user3209031端有單詞「SELECT」,這肯定是代碼有問題。很難說沒有看到代碼或網頁?也許用相關代碼發佈一個新問題?聽起來非常神祕,在一邊SELECT :) – davidkonrad

0

因爲我想證明正確的代碼格式,因此發佈新的答案

@ DAVIDKONRAD:我知道了,當我除去columnDefs從下面的代碼,然後我的PDF顯示正確的記錄...順便說一句我的CSV,EXCEL,打印diplay正確的記錄與columnDefs ..只有PDF沒有顯示與「columnDefs」

,我才知道這被看作是「選擇」這個詞正確的記錄是因爲只有..as的我在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

我的意思是你應該張貼它使用的下拉作爲一個全新的問題,因爲它實際上是一個新問題! :)無論如何。問題在於,當您生成PDF時,您需要呈現數據。否則,你只需要獲得一些$(element).text()輸出,包括select和它的選項。就像這樣:

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

在這裏看到你的代碼(如靠近我可以得到) - >。 但是,您仍然存在由於您的渲染導致的問題,所以列位置已經搞亂了。它打破了內部<table>-結構。你爲什麼要插入額外的<td> .. </td>?但目前還沒有時間研究這一點。

+0

非常感謝你..是的,但它的工作,但一些coloumn是錯過匹配..將檢查出它...謝謝 – user3209031