DataTables打印按钮不起作用,打印空白页

时间:2017-07-18 19:39:24

标签: javascript jquery printing datatables

我正在开发一个项目,该项目使用DataTables插件构建数据库中的单词表。这是我用来创建表的函数。

var word_data_filtered = filterWordData(filter_states);
words_table = $("#words_generated").DataTable({
    "data" : word_data_filtered,
    "columns" : columns,
    "aLengthMenu": [[25, 50, 100, 200, -1],
            [25, 50, 100, 250, "All"]],
    "pageLength": 100,
    dom: "lBftipr",
    buttons: [
       'print',
    ]
});

按钮是DataTables的附加插件/附件。所以我实际上要复制并粘贴我在文件头部包含的各种脚本的主要部分,部分原因是如果我遗漏了一些我想知道的内容。

  <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
 <script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js">
 </script>
 <script src="//cdn.datatables.net/plug-ins/1.10.7/integration/bootstrap/3/dataTables.bootstrap.css"></script>
 <script src="//cdn.datatables.net/plug-ins/1.10.7/integration/bootstrap/3/dataTables.bootstrap.js"></script>
 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
 <link rel="stylesheet" href="https://cdn.datatables.net/tabletools/2.2.4/css/dataTables.tableTools.min.css"/>
 <script src="https://cdn.datatables.net/tabletools/2.2.4/js/dataTables.tableTools.min.js"></script>
 <script src="https://cdn.datatables.net/tabletools/2.2.4/swf/copy_csv_xls_pdf.swf"></script>

 <script src="https://cdn.datatables.net/buttons/1.3.1/js/dataTables.buttons.min.js"></script>
 <script src="https://cdn.datatables.net/buttons/1.3.1/js/buttons.print.min.js"></script>

所以现在我有一个“打印”按钮显示在页面上。但在我的Chrome浏览器中,打印按钮不起作用。

单击此按钮后,将打开一个新选项卡,其中谷歌浏览器的打印面板设置在桌面上。但是,打印面板会提示您打印空白页。打印预览显示一个空白页面(好吧,顶部有一个标题,就是这样)打印面板下面的表格看起来就像我网页上的表格,所以我假设我已经做了一些实际打印整个表格的方法。

但是仍然。我真的不知道为什么会这样,我不确定如何继续进行

2 个答案:

答案 0 :(得分:0)

  

打印视图按钮将获取表格中显示的数据的副本(基于exportOptions参数中给出的选择器选项),并构建一个新的临时表格,显示在新窗口中。

我认为您可能需要指定exportOptions才能指示打印按钮应打印哪些表数据。

https://datatables.net/reference/button/print

答案 1 :(得分:0)

我遇到了同样的问题,结果发现在打开的新页面中,您具有来自父页面的所有CSS。在我的CSS中,我发现此定义将隐藏所有内容以供打印:

@media print {
  body * {
    visibility: hidden;
  }