数据表 - 在回调后保留选定的页码

时间:2014-08-06 10:46:03

标签: jquery datatables jquery-datatables

我有一个数据表,我应该对其进行更改,例如我想更改内容的状态,但此内容位于表格的第3页。当我更改它时,数据表会刷新到第1页。我想要做的是保留选定的页码并在刷新后回拨它。这可能吗?

不过,我正在使用数据表1.9.4

编辑:解决方案

我所做的只是在我在datatable中制作的每个动作中保留页码,然后将其发送到Controller,然后通过TempData使用它。如果有人需要了解解决方案,请告诉我,我可以解释得更详细。

8 个答案:

答案 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'));
        }
    });

当您转到另一个页面并且想要返回(使用后退按钮)到最后选择的页面时,这非常有用。

另请参阅文档:https://datatables.net/blog/2012-01-16

答案 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.

请参见https://datatables.net/reference/api/ajax.reload()链接。

答案 3 :(得分:1)

答案 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>>

enter image description here

  

刷新/重新加载数据后,下面的 重定向 第一 页面使用ajax的表

  $('#YOUR_TABLE_ID').DataTable().ajax.reload(); //with refresh table <<page will change>>

enter image description here

答案 7 :(得分:0)

这是在DataTable v1.10.7中执行的操作:
DataTable将状态存储在Cookie中。

    $(document).ready(function() {
        $('#example').dataTable( {
            stateSave: true
        } );
    } );