我有一个数据表,我应该对其进行更改,例如我想更改内容的状态,但此内容位于表格的第3页。当我更改它时,数据表会刷新到第1页。我想要做的是保留选定的页码并在刷新后回拨它。这可能吗?
不过,我正在使用数据表1.9.4编辑:解决方案
我所做的只是在我在datatable中制作的每个动作中保留页码,然后将其发送到Controller,然后通过TempData使用它。如果有人需要了解解决方案,请告诉我,我可以解释得更详细。
答案 0 :(得分:25)
我将数据表状态保存在本地存储中,以避免在我的应用程序中传递页码。我就是这样做的:
$('#offersTable').dataTable({
"bStateSave": true,
"fnStateSave": function (oSettings, oData) {
localStorage.setItem('offersDataTables', JSON.stringify(oData));
},
"fnStateLoad": function (oSettings) {
return JSON.parse(localStorage.getItem('offersDataTables'));
}
});
当您转到另一个页面并且想要返回(使用后退按钮)到最后选择的页面时,这非常有用。
答案 1 :(得分:12)
在DataTables 1.10中,如果将false
作为第一个参数传递给draw()
函数,则可以在重新绘制后保持在同一页面上。
table.row(index).data(data).draw(false)
答案 2 :(得分:4)
如果您使用的是服务器端数据表,则可以使用ajax.reload()
函数来重新加载数据表。
像
var dt = $("#table").DataTable();
dt.ajax.reload(null, false); // false if you don't want to refresh paging else true.
答案 3 :(得分:1)
fnStandingRedraw是你想要的。 http://www.craiglotter.co.za/2012/05/28/how-to-refresh-a-datatable-without-losing-your-current-page-or-ordering/
答案 4 :(得分:0)
重绘保持当前分页位置的表:
var table = $('#example').DataTable();
table.draw( false );
答案 5 :(得分:0)
这就是我要这样做的方法,它将为我工作。
$.ajax({
url: "/CollectionHistory/Search",
data: { "licenseeId": licenseeId, "locationId": locationId, "month": monthId, "year": yearId, "pageNumber": 1 },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
if (table != null) {
table.clear();
table.destroy();
}
localStorage.setItem("manageLicenseeDataStateSave", "0");
table = $("#collection_history").DataTable({
"data": response.SalesData,
"columns": [
{ "data": "LocationName", "name": "Location Name", "autowidth": true, className: "text-center" }
"bLengthChange": false,
"bInfo": false,
"bFilter": false,
"ordering": true,
"stateSave": true,
"language": {
"paginate": {
"previous": "PREV",
"next": "NEXT",
}
}
});
},
error: function () {
window.location.href = "/Home/HandleError";
}
});
答案 6 :(得分:0)
如果要在第3页上使用ajax更新任何数据,并且不希望在刷新数据表中的数据后再次访问第一页,那么这里的解决方案将刷新表的数据但不重定向您到第一页。它将反映在同一页面上的更改。
以下以下不会 重定向 到 第一 页面< / strong>使用ajax刷新/重新加载数据表后
$('#YOUR_TABLE_ID').DataTable().ajax.reload(null, false); //without refresh table<<page will not change>>
刷新/重新加载数据后,下面的将 重定向 到 第一 页面使用ajax的表
$('#YOUR_TABLE_ID').DataTable().ajax.reload(); //with refresh table <<page will change>>
答案 7 :(得分:0)
这是在DataTable v1.10.7中执行的操作:
DataTable将状态存储在Cookie中。
$(document).ready(function() {
$('#example').dataTable( {
stateSave: true
} );
} );