1

我一直在寻找一段时间没有成功,以我能想到的所有可能的方式调整事情,但没有运气(我必须承认我对此很陌生)

我正在使用 Greasemonkey,我想将表格保存到 excel 或 scv。

我已经安装了 Datatables,Greasemonkey 中的所有资源图像和 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

而且(我不是 100% 确定这样做的方式):

// @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")
        }
    } );

此外,尽管将资源设置为 copy_csv_xls.swf(而不是 copy_csv_xls_pdf.swf),但我还是显示了 PDF 按钮,这对我来说似乎有点奇怪。

4

1 回答 1

0

如果检查 dataTables.Tabletools.js 的源代码,在初始化数据表时,tabletools 会使用 TableTools.DEFAULTS 对象并将它们与您的表自定义设置相结合。

在第 1158 行,根据我拥有的版本(1.0.4-Tabletools2),代码为 ZeroClipboard_TableTools 设置了 moviePath,我假设它是一个单例。现在,如果您在页面上有多个表,则此对象最终会采用为最后一个表指定的 swfpath 的值,或者如果未指定,则为 Default "sSwfPath": "../swf/copy_csv_xls_pdf.swf" 。

    /* Flash file location */
        this.s.swfPath = this.s.custom.sSwfPath;
        if ( typeof ZeroClipboard_TableTools != 'undefined' )
        {
            ZeroClipboard_TableTools.moviePath = this.s.swfPath;
        }

因此,我更改了我页面上表的初始化顺序作为修复,该表具有自定义路径作为要初始化的最后一个表。

虽然这解决了路径解析问题,但按钮仍然无法正常工作。!:-(。希望这对某人有所帮助。

于 2015-02-24T08:54:07.720 回答