jQuery dataTables - TableTools无效

时间:2014-07-19 06:48:47

标签: csv datatables flash jquery-datatables tabletools

我在本地主机(wamp服务器)中使用http://datatables.net/extensions/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"
            ]
        }
    ]
}    

首先没有点击copy,pdf,csv,xls按钮。因此,我教我的路径或瑞士法郎不工作,因此我用在线链接替换了链接。因此,现在我点击了,但是当我点击“复制”按钮时,它会给我一条消息......但是当我在记事本中过去时,它给了我“空白”。我的pdf,csv,xlsx也没有用。只有Print才能完美运行。请告诉我这是什么问题,因为我的localhost一切正常。它在我的在线服务器中产生问题。

3 个答案:

答案 0 :(得分:13)

我很确定datatables.net主动阻止使用.swf。 Allan Jardine评论了直接使用.swf文件several times

  

datatables.net不是CDN服务器,不应该这样使用。它   不是设计的,我可能会添加限制以进行热链接   未来正在使用和造成大量带宽   不必要的负担使用a可以获得更好的性能   适当的CDN甚至是本地托管的文件。

然而,随着1.10.x的推出,终于建立了一个真正的CDN服务器,包括所有TableTools资源 - &gt; HTTP:// <强> CDN .datatables.net / tabletools / 2.2.2 /

因此请将sSwfPath替换为:

<强> http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf

答案 1 :(得分: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" 
  ]

在这里查看您的代码(尽可能接近) - &gt;的 http://jsfiddle.net/3F8ZJ/ 即可。 但是,您仍然遇到由mRender渲染引起的问题,因此列位置会变得混乱。它打破了内部<table> - 结构。为什么要插入额外的<td> .. </td>?但此刻没有时间研究这个问题。

答案 2 :(得分:0)

因为我想显示正确的代码格式,因此发布为新答案

@ DAVIDKONRAD:我知道当我从下面的代码中删除 columnDefs 然后我的PDF显示正确的记录...顺便说一下我的csv,excel,print diplay正确记录使用columnDefs ..只有pdf没有显示带有“columnDefs”的正确记录

并且我知道看到“select”这个词只是因为那个..我在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>';
                                }
                              }
                           ]
        } );