5

ローカルホスト ( 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"
            ]
        }
    ]
}    

まず、コピー、pdf、csv、xls ボタンをクリックしませんでした。したがって、パスを教えたか、swf が機能していないため、リンクをオンライン リンクに置き換えました。したがって、クリックが表示されますが、[コピー]ボタンをクリックするとメッセージが表示されます...しかし、メモ帳を過去にすると、「空白」になります。また、pdf、csv、xlsx が機能しません。印刷のみが完璧に機能しています。私のローカルホストではすべて正常に動作しているため、何が問題なのか教えてください。オンラインサーバーで問題が発生しています。

4

3 に答える 3

13

私は、datatables.netが積極的にの使用をブロックしていると確信してい.swfます。.swfAllan Jardine は、ファイルの直接使用について何度かコメントしています。

datatables.net は CDN サーバーではないため、CDN サーバーとして使用しないでください。これは設計されたものではありません。将来、大量の帯域幅が使用され、不要な負荷が発生するため、ホットリンクのスロットリングを追加する可能性があります。適切な CDN またはローカルでホストされているファイルを使用すると、パフォーマンスが大幅に向上します。

しかし、1.10.x の導入により、すべての TableTools リソースを含む実際の CDN サーバーが最終的に確立されました -> http:// cdn .datatables.net/tabletools/2.2.2/

を次のように置き換えsSwfPathます。

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

于 2014-07-19T11:40:04.730 に答える
4

実際には新しい質問なので、まったく新しい質問として投稿する必要があることを意味しました! :) ともかく。問題は、PDF を作成するときにデータをレンダリングする必要があることです。それ以外の場合は、選択とそのオプションを含む $(element).text() 出力を取得するだけです。このような :

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

ここであなたのコードを見てください(私が得ることができる限り)-> http://jsfiddle.net/3F8ZJ/。ただし、レンダリングに起因する問題がまだ残っているmRenderため、列の位置がめちゃくちゃになっています。内部構造を壊し<table>ます。<td>余分な..を挿入するのはなぜ</td>ですか?しかし、現時点ではこれを調べる時間がありません。

于 2014-07-21T16:21:27.193 に答える
0

適切なコード形式を表示したいので、新しい回答として投稿します

@ DAVIDKONRAD :以下のコードからcolumnDefsを削除すると、PDF に適切なレコードが表示されることを知りました。

そして、「select」と表示されている単語を知ったのは、そのためだけです..

 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>';
                                }
                              }
                           ]
        } );
于 2014-07-21T08:23:00.443 に答える