Jquery plugins TableTools导出在多个JQuery选项卡上的DataTables中不起作用
我使用DataTables-1.8.2、TableTools-2.0.1和JQuery-1.6.4在三个JQuery选项卡中的每个选项卡上显示一个表。TableTools为表格提供了Copy/Excel/PDF/Print导出功能,仅在第一个选项卡上的第一个表格上工作良好。在其他两个选项卡上,将显示按钮,但除了“打印”按钮之外,它们都不执行任何操作(这是因为“打印”按钮不使用相同的基于Flash的方法)。路径不应该是一个问题(我知道Jquery plugins TableTools导出在多个JQuery选项卡上的DataTables中不起作用,jquery-plugins,datatables,tabletools,Jquery Plugins,Datatables,Tabletools,我使用DataTables-1.8.2、TableTools-2.0.1和JQuery-1.6.4在三个JQuery选项卡中的每个选项卡上显示一个表。TableTools为表格提供了Copy/Excel/PDF/Print导出功能,仅在第一个选项卡上的第一个表格上工作良好。在其他两个选项卡上,将显示按钮,但除了“打印”按钮之外,它们都不执行任何操作(这是因为“打印”按钮不使用相同的基于Flash的方法)。路径不应该是一个问题(我知道.swf路径是一个常见的问题),因为工作路径的配置只是为其他路径
.swf
路径是一个常见的问题),因为工作路径的配置只是为其他路径复制的。这是在Django服务器上运行的。下面是代码。我主要是用Python编写的,所以我对JS/CSS/DOM不是很熟悉,所以任何建议都非常感谢
<script type="text/javascript">
$(document).ready(function()
{
// Initiate datatable
fnFeaturesInit();
$('#tbl1').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"sDom": 'T<"clear">lfrtip',
"aaSorting":[],
"oTableTools": { "sSwfPath": "/static/swf/copy_cvs_xls_pdf.swf" }
});
$('#tbl2').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"sDom": 'T<"clear">lfrtip',
"aaSorting":[],
"oTableTools": { "sSwfPath": "/static/swf/copy_cvs_xls_pdf.swf" }
});
$('#tbl3').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"sDom": 'T<"clear">lfrtip',
"aaSorting":[],
"oTableTools": { "sSwfPath": "/static/swf/copy_cvs_xls_pdf.swf" }
});
}
</script>
$(文档).ready(函数()
{
//初始化数据表
fnFeaturesInit();
$('#tbl1')。数据表({
“bJQueryUI”:没错,
“sPaginationType”:“完整编号”,
“sDom”:“Tlfrtip”,
“aaSorting”:[],
“oTableTools”:{“sSwfPath”:“/static/swf/copy_cvs_xls_pdf.swf”}
});
$('#tbl2')。数据表({
“bJQueryUI”:没错,
“sPaginationType”:“完整编号”,
“sDom”:“Tlfrtip”,
“aaSorting”:[],
“oTableTools”:{“sSwfPath”:“/static/swf/copy_cvs_xls_pdf.swf”}
});
$('#tbl3')。数据表({
“bJQueryUI”:没错,
“sPaginationType”:“完整编号”,
“sDom”:“Tlfrtip”,
“aaSorting”:[],
“oTableTools”:{“sSwfPath”:“/static/swf/copy_cvs_xls_pdf.swf”}
});
}
(…剪断…)
{%if all_commercial%}
#(…剪断…)
{%else%}
没有可用的数据
{%endif%}
{%if all_commercial%}
#(…剪断…)
{%else%}
没有可用的数据
{%endif%}
#第三桌等
您可以尝试以下代码:
$(document).ready( function () {
TableTools.DEFAULTS.aButtons = [ "copy", "csv", "xls", "pdf" ];
TableTools.DEFAULTS.sSwfPath = "/static/swf/copy_cvs_xls_pdf.swf";
$('#tbl1').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"sDom": 'T<"clear">lfrtip',
"aaSorting":[],
});
.
.
.
});
$(文档).ready(函数(){
TableTools.DEFAULTS.aButtons=[“复制”、“csv”、“xls”、“pdf”];
TableTools.DEFAULTS.sSwfPath=“/static/swf/copy_cvs_xls_pdf.swf”;
$('#tbl1')。数据表({
“bJQueryUI”:没错,
“sPaginationType”:“完整编号”,
“sDom”:“Tlfrtip”,
“aaSorting”:[],
});
.
.
.
});
Alexandre Mathieu在他的博客中提供了一个解决方案:
这对我很有用(jquery 1.8):
在jquery 1.9+中:
$("#tabs").tabs({
activate: function(event, ui) {
ttInstances = TableTools.fnGetMasters();
for (i in ttInstances) {
if (ttInstances[i].fnResizeRequired()) ttInstances[i].fnResizeButtons();
}
}
});
表在初始化期间必须可见 如果没有,只需在屏幕上调用fnResizeButtons(2个选项): @*加载数据表js*@ @节脚本{
<script src="~/Scripts/jquery-2.2.0.js"></script>
<script src="~/Scripts/DataTables/jquery.dataTables.js"></script>
<script src="~/Scripts/DataTables/dataTables.tableTools.js"></script>
<script src="~/Scripts/DataTables/dataTables.buttons.min.js"></script>
<script src="~/Scripts/DataTables/buttons.flash.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<script src="~/Scripts/DataTables/buttons.html5.min.js"></script>
<script src="~/Scripts/DataTables/jszip.min.js"></script>
<script src="~/Scripts/DataTables/pdfmake.min.js"></script>
<script src="~/Scripts/DataTables/vfs_fonts.js"></script>
<script>
$('#tabs').tabs({
activate: function (event, ui) {
$.fn.dataTable.tables({ visible: true, api: true }).buttons.resize();
}
});
$(document).ready(
function () {
$('#myTable').DataTable({
dom: 'Bfrtip',
responsive: true,
buttons: [
'copyFlash',
'excelFlash',
'csvFlash',
'pdfFlash'],
//'copyHtml5',
//'excelHtml5',
//'csvHtml5',
//'pdfHtml5'],
"ajax": {
"url": "/home/AjaxHandler",
"type": "GET",
"datatype": "json"
},
"columns": [
{ "data": "Id", "autoWidth": true },
{ "data": "Name", "autoWidth": true },
{ "data": "DateOfBirth", "autoWidth": true },
{ "data": "Address", "autoWidth": true }
]
});
$('#myTable1').DataTable({
dom: 'Bfrtip',
buttons: [
'copyFlash',
'excelFlash',
'csvFlash',
'pdfFlash'],
//'copyHtml5',
//'excelHtml5',
//'csvHtml5',
//'pdfHtml5'],
"ajax": {
"url": "/home/AjaxHandler1",
"type": "GET",
"datatype": "json"
},
"columns": [
{ "data": "Id", "autoWidth": true },
{ "data": "Name", "autoWidth": true }
]
});
});
</script>
$('#制表符')。制表符({
激活:功能(事件、用户界面){
$.fn.dataTable.tables({visible:true,api:true}).buttons.resize();
}
});
$(文件)。准备好了吗(
函数(){
$('#myTable')。数据表({
dom:'Bfrtip',
回答:是的,
按钮:[
“copyFlash”,
“excelFlash”,
“csvFlash”,
“pdfFlash”],
//“复制HTML5”,
//“卓越HTML5”,
//“csvHtml5”,
//“pdfHtml5”],
“ajax”:{
“url”:“/主页/AjaxHandler”,
“类型”:“获取”,
“数据类型”:“json”
},
“栏目”:[
{“data”:“Id”,“autoWidth”:true},
{“data”:“Name”,“autoWidth”:true},
{“数据”:“出生日期”,“自动宽度”:true},
{“数据”:“地址”,“自动宽度”:true}
]
});
$('#myTable1')。数据表({
dom:'Bfrtip',
按钮:[
“copyFlash”,
“excelFlash”,
“csvFlash”,
“pdfFlash”],
//“复制HTML5”,
//“卓越HTML5”,
//“csvHtml5”,
//“pdfHtml5”],
“ajax”:{
“url”:“/home/AjaxHandler1”,
“类型”:“获取”,
“数据类型”:“json”
},
“栏目”:[
{“data”:“Id”,“autoWidth”:true},
{“数据”:“名称”,“自动宽度”:true}
]
});
});
}你可能已经猜到了,但是你的副本拼写错误,应该看起来像是copy\u CSV\u xls\u pdf.swfNicely done@kayz1。当我在合并Twitter引导选项卡和数据表导出按钮时遇到类似问题时,我选择了2号门。这很有效。但是我不得不更改字体大小。(似乎改变了原来的字体SZ)。不知道为什么会这样。
$("#tabs").tabs({
activate: function(event, ui) {
ttInstances = TableTools.fnGetMasters();
for (i in ttInstances) {
if (ttInstances[i].fnResizeRequired()) ttInstances[i].fnResizeButtons();
}
}
});
$("#tabs").tabs({
activate : function(event, ui)
{
// Version 1.
$('table', ui.panel).each(function()
{
var oTableTools = TableTools.fnGetInstance(this);
if (oTableTools && oTableTools.fnResizeRequired())
{
oTableTools.fnResizeButtons();
}
});
// or version 2.
var tableInstances = TableTools.fnGetMasters(), instances = tableInstances.length;
while (instances--)
{
var dataTable = tableInstances[instances];
if (dataTable.fnResizeRequired())
{
dataTable.fnResizeButtons();
}
}
}
});
<script src="~/Scripts/jquery-2.2.0.js"></script>
<script src="~/Scripts/DataTables/jquery.dataTables.js"></script>
<script src="~/Scripts/DataTables/dataTables.tableTools.js"></script>
<script src="~/Scripts/DataTables/dataTables.buttons.min.js"></script>
<script src="~/Scripts/DataTables/buttons.flash.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<script src="~/Scripts/DataTables/buttons.html5.min.js"></script>
<script src="~/Scripts/DataTables/jszip.min.js"></script>
<script src="~/Scripts/DataTables/pdfmake.min.js"></script>
<script src="~/Scripts/DataTables/vfs_fonts.js"></script>
<script>
$('#tabs').tabs({
activate: function (event, ui) {
$.fn.dataTable.tables({ visible: true, api: true }).buttons.resize();
}
});
$(document).ready(
function () {
$('#myTable').DataTable({
dom: 'Bfrtip',
responsive: true,
buttons: [
'copyFlash',
'excelFlash',
'csvFlash',
'pdfFlash'],
//'copyHtml5',
//'excelHtml5',
//'csvHtml5',
//'pdfHtml5'],
"ajax": {
"url": "/home/AjaxHandler",
"type": "GET",
"datatype": "json"
},
"columns": [
{ "data": "Id", "autoWidth": true },
{ "data": "Name", "autoWidth": true },
{ "data": "DateOfBirth", "autoWidth": true },
{ "data": "Address", "autoWidth": true }
]
});
$('#myTable1').DataTable({
dom: 'Bfrtip',
buttons: [
'copyFlash',
'excelFlash',
'csvFlash',
'pdfFlash'],
//'copyHtml5',
//'excelHtml5',
//'csvHtml5',
//'pdfHtml5'],
"ajax": {
"url": "/home/AjaxHandler1",
"type": "GET",
"datatype": "json"
},
"columns": [
{ "data": "Id", "autoWidth": true },
{ "data": "Name", "autoWidth": true }
]
});
});
</script>