Ich habe ein Array und möchte sie entsprechend der voreingestellten Seitengröße in Seiten unterteilen.
So mache ich:
private int CalcPagesCount()
{
int totalPage = imagesFound.Length / PageSize;
// add the last page, ugly
if (imagesFound.Length % PageSize != 0) totalPage++;
return totalPage;
}
Ich denke, die Berechnung ist nicht die einfachste (ich bin schlecht in Mathe). Können Sie eine einfachere Berechnungsformel geben?
c#
pagination
Benny
quelle
quelle
PageSize = int.MaxValue
. Ich habe eine Antwort hinzugefügt, die nicht für einen Überlauf anfällig ist.((imagesFound.Length - 1) / PageSize) + 1
Tatsächlich sind Sie dem Besten nahe, was Sie tun können. Über das einzige, was ich mir vorstellen kann, dass es "besser" sein könnte, ist so etwas:
totalPage = (imagesFound.Length + PageSize - 1) / PageSize;
Und der einzige Grund, warum dies besser ist, ist, dass Sie die if-Anweisung vermeiden.
quelle
PageSize = int.MaxValue
. Ich habe eine Antwort hinzugefügt, die nicht für einen Überlauf anfällig ist.HINWEIS: Sie erhalten immer mindestens 1 Seite, auch bei einer Anzahl von 0, wenn die Seitengröße> 1 ist. Dies ist das, was ich brauchte, aber möglicherweise nicht das, was Sie brauchen. Eine Seitengröße von 1 (albern, aber technisch gültig) und eine Anzahl von 0 wären null Seiten. Abhängig von Ihren Anforderungen möchten Sie möglicherweise nach einem Nullwert für Anzahl und Seitengröße von 1 suchen
int pages = ((count - 1) / PAGESIZE) + 1;
quelle
Das OP enthält eine gültige Antwort. Wenn ich das Paging ausschalten wollte, konnte ich einstellen
PageSize = int.MaxValue
.Mehrere Antworten hier ergänzen
PageSize
(imagesFound.Length + PageSize
) und das könnte einen Überlauf verursachen. Was dann zu einem falschen Ergebnis führt.Dies ist der Code, den ich verwenden werde:
int imageCount = imagesFound.Length; // include this if when you always want at least 1 page if (imageCount == 0) { return 1; } return imageCount % PageSize != 0 ? imageCount / PageSize + 1 : imageCount / PageSize;
quelle
DECLARE @PageCount INT; DECLARE @NoOfData INT; SET @NoOfData = (select Count(*) AS [PageCount] from YourTableName) SET @PageCount=((@NoOfData+@PageSize-1)/@PageSize) SELECT @PageCount AS [PageCount]
int totalPage = (int) Math.Ceiling((double) imagesFound.Length / PageSize);
quelle
Folgendes hat bei mir funktioniert:
if(totalRecords%value === 0){ count = (totalRecords) / value; } else { count = Math.floor((totalRecords + value - 1) / value); }
quelle
Etwas, das ich selbst geschrieben habe:
private int GetPageCount(int count, int pageSize) { int result = 0; if(count > 0) { result = count / pageSize; if(result > 0 && (count > (pageSize * result))) { result++; } } return result; }
(Und sicher, nicht festgelegt
pageSize
zuint.MaxValue
)quelle
Unten finden Sie einen Arbeitscode zur Berechnung der Paginierung in der Liste:
int i = 0; int pagecount = 0; int pageSize = 50;
Listenelemente = neue Liste (); Aufgaben: Elemente zur Liste hinzufügen:
if (Items.Count() != 0) { int pageNumber = Total Records / 50; for (int num = 0; numi < pageNumber; num++) { var x = Items.Skip(i * pageSize).Take(pageSize); i++; } var y = Items.Skip(i * pageSize).Take(pageSize); }
quelle
Um Fehler bei der Seitennummerierung zu vermeiden, kann ich mir noOfPages am besten anhand der folgenden Zeile vorstellen
Dies sollte Ihnen nicht Seite 2 geben, wenn PageSize == imagesFound.Length
quelle