我在本地主机(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一切正常。它在我的在线服务器中产生问题。
答案 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>';
}
}
]
} );