Halten Sie Paginierung wiederholbar, wenn Wechselvorgänge durchgeführt werden,

StackOverflow https://stackoverflow.com/questions/84615

  •  01-07-2019
  •  | 
  •  

Frage

Wenn man will, ergibt sich aus einer Datenquelle Paginieren, die Paginierung wir zu einem Prozess der gehen müssen unterstützt:

  1. die Seitengröße zu definieren -, dass die Anzahl der Ergebnisse pro Seite zu zeigen;
  2. jede Seite vom Benutzer angeforderten holen unter Verwendung eines offset = Seitennummer (0 basierend) * Seitengröße
  3. zeigen die Ergebnisse der abgerufenen Seite.

Das alles funktioniert ist gut so nicht in Anbetracht der Tatsache, dass eine Operation stattfindet, das Backend-System, die Schrauben auf die Paginierung auswirken können. Ich spreche von jemandem Daten zwischen Seite Einfügen holt oder Löschen von Daten.

page_size = 10;
get page 0 -> results from 0 to 9;
user inserts a record that due to the query being executed goes to page 0 - the one just shown;
get page 1 -> results from 10 to 19 - the first results on the page is the result on the old page 0.

Das beschriebene Verhalten kann Verwirrung für den Betrachter hervorrufen. Kennen Sie eine praktische Lösung, um dieses Problem zu umgehen.

War es hilfreich?

Lösung

Es gibt ein paar Denkschulen o dies.

  1. Daten aktualisiert wird, lassen Sie es sein
  2. Sie könnten eine Art von Caching-Methode implementieren, die halten wird gesamte Ergebnismenge (Dies kann nicht sein, eine Option, wenn die Arbeit mit wirklich große Daten-Sets)
  3. Sie könnten einen Vergleich auf jeder Seite Operation tun und informieren die Benutzer, wenn die gesamte Anzahl der Datensätze Änderungen

.

Andere Tipps

Wenn die Updates Sie sind betroffen sind in erster Linie neue Einfügungen (zum Beispiel Stackoverflow selbst scheint von diesem Problem zu leiden, wenn sie durch Fragen Paging und neue Fragen kommen in) eine Möglichkeit, es zu handhaben ist, einen Zeitstempel zu erfassen, wenn Sie die Ausgabe von erste Paginierung Abfrage, und dann für die nachfolgenden Seiten, um Elemente, die Ergebnisse von Anfragen zu beschränken, die vor diesem Zeitstempel vorhanden waren.

Solange Benutzer verstehen, dass die zugrunde liegenden Daten immer ändert, werden sie nicht verwechselt werden. So einfach es die einfache Art und Weise tun.

Sie könnten die ersten paar Seiten des Ergebnis-Cache und dass für nachfolgende Ansichten verwenden, aber dann werden die Ergebnisse mit der Datenbank nicht mehr synchron sein, was noch verwirrender ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top