jquery DataTable - 更改iDisplayLength动态影响分页

时间:2017-11-19 15:10:37

标签: jquery datatable paging

我有一个带有"iDisplayLength":-1的jquery DataTable(所有记录),在第一个加载用户上将看到所有记录。 这个表每分钟都刷新一次(每次刷新初始化表 - 也许这不是最好的?)。

 function initEventsTable() {

        self.$eventTable = $("#events_table");

        if (self.$eventTable != undefined) {

            self.oTable = self.$eventTable.DataTable({

                "scrollX": true,

                "aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],

                // Set the initial value
                "iDisplayLength":-1,

                "sPaginationType": "bootstrap",
                "oLanguage": {
                    "sLengthMenu": "_MENU_ records",
                    "oPaginate": {
                        "sPrevious": "Prev",
                        "sNext": "Next"
                    }
                },

                aaSorting: [[8, 'desc'], [5, 'asc']],
                bSortable: true,

            });
}

用户可以更改行数(例如10行):

$('[name="events_table_length"]').on('change', function () {
        eventsTableLength = $(this).val();
    });

表刷新后(initEventsTable())我使用下面的代码更改长度:

var oSettings = self.oTable.fnSettings();
        if (oSettings != null)
        {
            $('select[name^="events_table_length"] option:selected').attr("selected", null);
            $('select[name^="events_table_length"] option[value=' + eventsTableLength + ']').attr("selected", "selected");
            oSettings._iDisplayLength = eventsTableLength;
            self.oTable.fnDraw();            
        }

问题在于分页,刷新后我点击第2页时会显示所有记录,而不仅仅是10。

1 个答案:

答案 0 :(得分:0)

我想出了这个:

$('select[name^="events_table_length"]').change();

相反专注于桌子,我专注于长度的下拉。 我添加了一个change(),这就是魔术。