我一直在寻找一段时间没有成功,以我能想到的所有可能的方式调整事情,但没有运气(我必须承认我对此很新)
我正在使用Greasemonkey,我想将表格保存为excel或scv。
我已经安装了Datatables,Greasemonkey中的所有ressources图像和css都没问题,但是我现在仍然坚持使用TableTools安装导出功能。
我在用户名中有这些陈述:
// @require http://datatables.net/download/build/jquery.dataTables.js
// @require https://raw.github.com/DataTables/TableTools/master/media/js/ZeroClipboard.js
// @require http://www.datatables.net/download/build/TableTools.js
而且(我不是百分之百确定这样做的方式):
// @resource copy_csv_xls https://github.com/DataTables/TableTools/raw/master/media/swf/copy_csv_xls.swf
然后在我的代码中我有
$('#GridView1').dataTable( {
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"sSwfPath": "copy_csv_xls.swf"
}
} );
我还尝试使用如下变量设置路径:
var copy_csv_xls = GM_getResourceURL ("copy_csv_xls");
......也没有运气。
我收到了以下错误。 修改。此错误是由于错误的资源链接:我链接到原始的ZeroClipboard仓库,而它需要指向TableTools仓库中的MODIFIED版本(上面的资源链接在编辑中更改)
ReferenceError: ZeroClipboard_TableTools is not defined
var flash = new ZeroClipboard_TableTools.Client();
关于这个问题的任何线索?
提前感谢您的帮助。
编辑(续)我的资源链接错误(请参阅上面的说明),这部分解决了我的问题。 但是我似乎仍然有一个sSwfPath问题,下面的代码是最接近工作的东西,但仍然有些东西不起作用(没有flash插件显示按钮点击没有动作):
$('#GridView1').dataTable( {
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"sSwfPath": GM_getResourceURL("copy_csv_xls")
}
} );
尽管将ressource设置为copy_csv_xls.swf(而不是copy_csv_xls_pdf.swf),但我显示了PDF按钮,这对我来说有点奇怪。
答案 0 :(得分:0)
如果检查dataTables.Tabletools.js的源代码,在初始化数据表时,tabletools使用TableTools.DEFAULTS对象并将它们与表自定义设置组合在一起。
在第1158行,根据我所拥有的版本(1.0.4-Tabletools2),代码为ZeroClipboard_TableTools设置了moviePath,我假设它是一个单例。现在,如果页面上有多个表,则此对象最终会获取为最后一个表指定的swfpath值,或者默认&#34; sSwfPath&#34;:&#34; ../ swf / copy_csv_xls_pdf.swf&#34 ; ,如果没有指定。
/* Flash file location */
this.s.swfPath = this.s.custom.sSwfPath;
if ( typeof ZeroClipboard_TableTools != 'undefined' )
{
ZeroClipboard_TableTools.moviePath = this.s.swfPath;
}
所以,我改变了我的页面上的表的初始化顺序作为修复,其中表具有自定义路径作为要初始化的最后一个表。
虽然这解决了路径解析问题,但按钮仍无法正常工作。 ! :-(。希望这有助于某人。