我试图在新标签页中打开PDF,它位于jQuery Datatables的集合按钮中,但它不起作用。相反,它会向我显示如下警告信息:
这是我的jQuery配置:
$("#clientes").DataTable({
dom: 'T<"clear">lfrtip',
tableTools: {
"aButtons": [
{
"sExtends": "collection",
"sButtonText": "Generar Listado <span class='caret' />",
"aButtons": ['csv', 'xls', {
extend: 'pdfHtml5',
download: 'open'
}]
}
],
"sSwfPath": "Content/DataTables/swf/copy_csv_xls_pdf.swf"
}
});
有关如何使用jquery datatables的此集合按钮解决此问题的任何想法?
我已将所有引用放在我的bundle类中,试图让它工作:
答案 0 :(得分:0)
问题似乎来自错误提供的"sSwfPath"
值,因此按钮类型变为undefined
:
"sSwfPath": "Content/DataTables/swf/copy_csv_xls_pdf.swf"
按钮检查条件适用于dataTables.tableTools.js
中的_fnButtonDefinations
:
if (typeof TableTools.BUTTONS[ buttonSet[i] ] == 'undefined' ) {
alert( "TableTools: Warning - unknown button type: "+buttonSet[i]);
continue;
}
buttonDef = $.extend({}, TableTools.BUTTONS[buttonSet[i]], true);
您可以尝试UrlHelper.Content
与SWF文件的相对路径或直接从DataTables
CDN外部资源引用:
// local content (in Razor view)
"sSwfPath": "@Url.Content("~/Content/DataTables/swf/copy_csv_xls_pdf.swf")"
// external resource (i.e. DataTables CDN)
"sSwfPath": "http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf"
您也可以尝试将sExtends
设置为pdf
而不是collection
:
$("#clientes").DataTable({
dom: 'T<"clear">lfrtip',
tableTools: {
"aButtons": [
{
"sExtends": "pdf",
"sButtonText": "Generar Listado <span class='caret' />",
"aButtons": ['csv', 'xls', {
extend: 'pdfHtml5',
download: 'open'
}]
}
],
"sSwfPath": "http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf"
}
});
您需要关注的下一个问题是文件安全问题,因为加载外部SWF资源会受到一些限制。打开global security settings panel并选择&#34;始终允许&#34;对于CDN资源,或用于本地存储的SWF使用&#34;添加位置&#34; (参见下图),输入分配给sSwfPath
的SWF路径,然后确认对该路径应用信任(可能需要在之后刷新视图)。
参考文献:
DataTables TableTools buttons not working correctly (simple example)
TableTools export in JQuery Datatables not working