【问题标题】:Jquery DataTable plugin with Ajax BeginForm and Buttons带有 Ajax BeginForm 和按钮的 Jquery DataTable 插件
【发布时间】:2017-12-27 23:00:14
【问题描述】:

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

插件加载如下:

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 运行时错误:对象不支持属性或方法“按钮”

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

我的问题是我应该怎么做才能让我的导出按钮在 Ajax 调用之后重新显示?

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多