【发布时间】: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 = "OnSuccess",
UpdateTargetId = "resultsDiv",
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST"
},
new { @class = "form-horizontal" }
))
{ ... }
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