javascript - Hur man återställer paginering i en JQuery-datatable
Jag har en JQuery-datatable som laddar data via en ajax-förfrågan. Det finns ett formulär vid tabellen som låter användaren filtrera resultaten på servern. När användaren ändrar filterformuläret, kallar jag fnReloadAjax() med de nya filterdata, och tabellen ritar om med de nya, filtrerade resultaten.
Problemet jag har är att pagineringen fastnar, även om tabellen inte längre har tillräckligt med objekt för att nå den aktuella sidan. Så om tabellen ursprungligen hade 20 objekt, och användaren var på sida 2 (10 objekt per sida), och de ändrar filtret så att endast 5 objekt returneras, visar tabellen inga objekt och visar detta längst ner:
Showing 11 to 5 of 5 entries
Det är fortfarande på sida 2 även om det bara finns tillräckligt med data för en sida.
Jag har hittat många inlägg om att försöka bevara den aktuella sidan/raden, men inget som visar ett enkelt sätt att återställa sidnumreringen till första sidan. Vad är det enklaste sättet att göra detta?
Här är en förenklad version av min kod för tydlighet:
$("#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;
});
Svar #1
Du kan explicit hoppa till första sidan efter omladdning, se http://datatables.net/api#fnPageChange
$("#myForm").submit(function(e) {
table.fnPageChange(0);
table.fnReloadAjax();
return false;
});
Svar #2
Accepterar lösningen given av @Gigo:
$("#myForm").submit(function(e) {
table.fnPageChange(0);
table.fnReloadAjax();
return false;
});
Det här har ett problem, det skickar två förfrågningar till servern.
Jag har upptäckt att fnPageChange gör det första gången.
$("#myForm").submit(function(e) {
table.fnPageChange(0);
return false;
});
