我在同一页面中使用TableToolsDataTables v1.10

我的主页有表格,模态为空div。

<div id="resultDiv">
  <table id="mainTable"> ... </table>
  <div id="detailModal">
    <div id="detailModal-content"></div>
  </div>
</div>

<script>
$(document).ready(function () {
  var mainTable = $('#mainTable').DataTable({
    "dom": 'T<"clear">lrtip',
    "tableTools": { ... },
    "columns": [
      {
        "data": null,
        "render": function(data, type, row, meta) {
          return '<a href="" onClick="return loadDetail(' + data.id + ')">Details</a>';
        }
      },
      ....
    ],
    ........
  });
});

function loadDetail(id) {
  $.ajax({
    async: false,
    url: ...,
    success: function(respose) {
      var tableInstance = TableTools.fnGetInstance('detailTable');
      console.log(tableInstance); //null
    }
  });
}
</script>

单独的详细信息页面还有另一个表,该表以detailModal-content div呈现。
<table id="detailTable">

</table>

<script>
$(document).ready(function () {
  var mainDetailTable = $jq11('#detailTable').DataTable({
    "dom": 'T<"clear">ltipr',
    "tableTools": { ... },
    ..............
  });
});
</script>

在这里,TableTools的第一个mainTable正常工作,但是对于第二个表却不起作用(我可以单击按钮,但是单击它不会创建xls文件)。我正在尝试通过按建议的here创建表后调用fnResizeButtons()来解决此问题。但是tableInstance为null。

有什么建议吗?

最佳答案

据我所知,TableTools(不是DataTable)在模态表上无法正常工作吗?

我本人也遇到过类似的问题,它取决于不可见的初始化表以及与Flash有关的问题,可以修复,这就是我用来解决类似问题的原因,该问题是由于不同的 bootstrap 选项卡上的表没有功能TableTools除外,该表最初是可见的:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    var target_id = $(e.target).attr("href");
    var jqTable = $(target_id).find("table");
    var oTableTools = TableTools.fnGetInstance( jqTable[0] );
    if (oTableTools != null && oTableTools.fnResizeRequired()){
        /* A resize of TableTools' buttons and DataTables' columns is only required on the
         * first visible draw of the table
         */
        jqTable.dataTable().fnAdjustColumnSizing();
        oTableTools.fnResizeButtons();
    }
});

当然,您必须在shown.bs.modal或任何其他显示您的模式的事件上获取表实例,但这应该可以解决TableTools问题。

希望能有所帮助。

关于javascript - DataTables TableTools无法与两个表一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30131326/

10-11 06:12