У меня есть JQuery datatable, который загружает данные через запрос ajax. В таблице есть форма, которая позволяет пользователю фильтровать результаты на сервере. Когда пользователь меняет форму фильтра, я вызываю fnReloadAjax() с новыми данными фильтра, а таблица перерисовывается с новыми, отфильтрованными результатами.Как сбросить разбиение на страницы в JQuery datatable
Проблема заключается в том, что палки для папок расположены, даже если в таблице больше нет предметов для достижения текущей страницы. Поэтому, если в таблице первоначально было 20 элементов, а пользователь был на странице 2 (10 элементов на странице), и они меняют фильтр, поэтому возвращается только 5 элементов, таблица не отображает никаких элементов и показывает это внизу:
Showing 11 to 5 of 5 entries
Это все еще на странице 2, хотя для одной страницы достаточно данных.
Я нашел множество сообщений о попытке сохранить текущую страницу/строку, но ни один из них не показывает простой способ сбросить разбиение на страницы на первую страницу. Каков самый простой способ сделать это?
Вот упрощенная версия моего кода для ясности:
$("#mytable").dataTable({
bStateSave: false,
fnServerData: function (sSource, aoData, fnCallback) {
return $.ajax({
type: "POST",
url: url,
data: {filter: filterValue}
});
}
});
$("#myForm").submit(function(e) {
table.fnReloadAjax();
return false;
});
Ах да, это функция, которую я искал. Тем не менее, мне пришлось сначала изменить страницу, чтобы предотвратить проблемы с возвратом вызова ajax, поэтому поставьте table.fnPageChange (0) перед table.fnReloadAjax(). Благодаря! – JMB
Рад, что это сработало, я отредактировал свой ответ на самом деле, как вы сказали. – Gigo
Проблема этого решения заключается в отправке двух запросов. Один для изменения страницы и другой для перезагрузки данных. – workdreamer