带有Ajax BeginForm和Buttons的Jquery DataTable插件

时间:2017-12-27 23:00:14

标签: jquery datatables

我正在使用带有导出和显示分页按钮的数据网格。

插件加载如下:

var table = $('#resultsTable').DataTable({ dom: 'Bfrtip', initComplete: function (settings, json) { debugger; $('#resultsTable').DataTable().buttons().container().appendTo('#UserHead'); },
lengthMenu: [ [10, 25, 50, -1], ['10 rows', '25 rows', '50 rows', 'Show all'] ], buttons: [ 'pageLength', { extend: 'collection', text: 'Export', buttons: [ 'copy', 'excel', 'csv', 'pdf', 'print' ] }] });

首次启动页面时,此功能正常。我有一个Ajax.BeginForm,我用数据集刷新数据表。使用上面的代码,按钮消失,但数据库插件的其余部分工作正常。

Ajax代码:

@using (Ajax.BeginForm(Model.ReportName, "Report", new AjaxOptions {
OnSuccess = "OnSuccess", UpdateTargetId = "resultsDiv", InsertionMode = InsertionMode.Replace, HttpMethod = "POST" }, new { @class = "form-horizontal" } )) { ... }
 我尝试使用OnSuccess方法中的以下代码让按钮返回到数据网格中:

var table = $('#resultsTable').DataTable({ dom: 'Bfrtip', "initComplete": function (settings, json) { $('#resultsTable').DataTable().buttons().container().appendTo('#UserHead'); table.buttons().container().appendTo('#UserHead'); }, lengthMenu: [ [10, 25, 50, -1], ['10 rows', '25 rows', '50 rows', 'Show all'] ], buttons: ['pageLength', { extend: 'collection', text: 'Export', buttons: [ 'copy', 'excel', 'csv', 'pdf', 'print' ] }] });

这会导致initComplete函数出现异常:JavaScript运行时错误:对象不支持属性或方法'buttons'

我已尝试以下方法来解决此问题:从第一次加载中保存一个表变量,并在OnSuccess调用DataTable之前调用destroy。这导致例外。

我的问题是如何在Ajax调用之后让我的导出按钮显示回来?

1 个答案:

答案 0 :(得分:0)

问题是没有扩展的jquery的重新初始化。初学者好运,案件结案。