Moin!
Ich überlege gerade, wie ich am besten eine Pagination nach Buchstaben umsetzen kann. Genutz werden soll eine h:dataTable oder eine andere Komponente (z.B. Primefaces ) die die Atribute "first" und "columns" besitzt.
Ich Dachte mir das in etwas so:
1. Ich muss die Anzahl der Elemente in den jeweiligen Untermengen 'A', 'B', ....'Z' kennen.
2. Ich muss die Anzahl der Elemente in einer Zeile kennen. z.B. drei Elemente pro Zeile.
Daraus kann ich ja theoretisch errechnen in welcher Zeile die jeweilige Untermenge anfängt.
Pseudocodemäßig würde das dann so aussehen:
Berechnung der Zeilenanzahl.
Das ganze würde ich dann z.B. in eine Liste speichern. Es muss gewährleistet sein, dass in der Richtigen reihenfolge einsortiert wird aber das ist nicht das Problem.
Abfragen würde ich dann die Zeilenanzahl des vorgängers. Also für 'B' wird nach 'A' gefragt und für 'C' nach 'A'+'B' usw.
Da A bei Zeile eins anfängt und B nach A kommt ist das denke ich logisch.
Soweit mein Gedankengang. Denk daran, das war ungetesteter Pesudocode als Gedankenstütze
Was haltet ihr von der Grundidee?
Was denkt ihr, wie kann man dabei am besten mit Brüchen umgehen?
Ich meine es können ja auch mal 6,25 Zeilen oder 5,5 Zeilen raus kommen.
LG
David
Ich überlege gerade, wie ich am besten eine Pagination nach Buchstaben umsetzen kann. Genutz werden soll eine h:dataTable oder eine andere Komponente (z.B. Primefaces ) die die Atribute "first" und "columns" besitzt.
Ich Dachte mir das in etwas so:
1. Ich muss die Anzahl der Elemente in den jeweiligen Untermengen 'A', 'B', ....'Z' kennen.
2. Ich muss die Anzahl der Elemente in einer Zeile kennen. z.B. drei Elemente pro Zeile.
Daraus kann ich ja theoretisch errechnen in welcher Zeile die jeweilige Untermenge anfängt.
Pseudocodemäßig würde das dann so aussehen:
Berechnung der Zeilenanzahl.
Java:
public int getRowCount(Collection sub){
//Beispiel für Elemente Pro zeile
int maxElementsPerRow = 3;
// Elemente Anzahl / Elemente Pro Zeile = Zeilenanzahl
int rowcount = sub.size() / maxElementsPerRow;
}
Das ganze würde ich dann z.B. in eine Liste speichern. Es muss gewährleistet sein, dass in der Richtigen reihenfolge einsortiert wird aber das ist nicht das Problem.
Abfragen würde ich dann die Zeilenanzahl des vorgängers. Also für 'B' wird nach 'A' gefragt und für 'C' nach 'A'+'B' usw.
Da A bei Zeile eins anfängt und B nach A kommt ist das denke ich logisch.
Java:
//Klassenvariable die die FirstRows speichert
private List<Integer> firstRows;
..
..
public void insertFirstRow(Collection sub){
//Wie viele Zeilen bis zur aktuellen Untermenge?
Integer rowsBeforSub = 0;
for(Integer i : firstRows ){
rowsBeforSub += i;
}
//Das Ende der aktuellen Untermenge ist der Anfang der folgenden
//Hier habe ich editiert, sub.size() war natürlich völlig daneben an der stelle
this.firstRows.add( getRowCount(sub)+rowsBeforSub );
}
Soweit mein Gedankengang. Denk daran, das war ungetesteter Pesudocode als Gedankenstütze
Was haltet ihr von der Grundidee?
Was denkt ihr, wie kann man dabei am besten mit Brüchen umgehen?
Ich meine es können ja auch mal 6,25 Zeilen oder 5,5 Zeilen raus kommen.
LG
David
Zuletzt bearbeitet: