首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery dataTables - TableTools不工作

jQuery dataTables - TableTools不工作
EN

Stack Overflow用户
提问于 2014-07-19 14:48:47
回答 3查看 26.1K关注 0票数 5

我在本地主机( wamp服务器)中使用http://datatables.net/extensions/tabletools/。它工作得很好,但是当我把同样的代码放到我的在线服务器上时,它就不能工作了。

我使用的是所有最新版本的datatables

代码语言:javascript
复制
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按钮。因此,我教我的路径或swf不工作,因此我用在线链接替换链接。因此,现在我得到了点击,但当我点击复制按钮时,它会给我一条消息...但是当我经过我的记事本时,它给了我“空白”。我的pdf,csv,xlsx也不能工作。只有印刷品才能完美地工作。请让我知道是什么问题,因为在我的本地主机一切正常。它在我的在线服务器上产生了问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-19 19:40:05

我非常确定datatables.net正在积极地阻止.swf的使用。Allan Jardine评论了直接使用.swf文件several times

datatables.net不是CDN服务器,不能作为CDN服务器使用。它不是被设计成这样的,我可能会在未来为热链接添加节流,因为大量的带宽正在被使用,并造成不必要的负载。通过使用适当的CDN,甚至是本地托管的文件,您将获得更好的性能。

但是,随着1.10.x的引入,终于建立了一个真正的CDN服务器,包含了-> http://.datatables.net/tabletools/2.2.2/的所有TableTools资源

因此,将sSwfPath替换为:

票数 13
EN

Stack Overflow用户

发布于 2014-07-22 00:21:27

我的意思是你应该把它作为一个全新的问题发布,因为它实际上是一个新问题!:)不管怎样。问题是,在生成PDF时,您需要呈现数据。否则,您只会得到一些$(element).text()输出,包括select及其选项。如下所示:

代码语言:javascript
复制
 "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" 
  ]

请在此处查看您的代码(尽可能接近) -> 。但是,您仍然有一个由mRender呈现引起的问题,因此列的位置是混乱的。它破坏了内部的<table>-structure。为什么要插入额外的<td>..</td>?但目前没有时间来研究这一点。

票数 4
EN

Stack Overflow用户

发布于 2014-07-21 16:23:00

由于我想显示正确的代码格式,因此post作为新的答案

@ DAVIDKONRAD :我知道当我从下面的代码中删除columnDefs时,我的会显示正确的记录……顺便说一句,我的csv,excel,打印显示正确的记录与columnDefs ..只有pdf没有用"columnDefs“显示正确的记录

我知道“select”这个词是因为我只在..as中使用了dropdown

代码语言:javascript
复制
 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>';
                                }
                              }
                           ]
        } );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24837595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档