I den här artikeln tänkte jag gå igenom hur man gör för att skapa en egen paging i ASP.NET istället för att använda Microsofts egna som finns i GridView. I en GridView så har inte SQL något med pagingen att göra utan ASP.NET löser allt åt dig. Det jag tänkte visa handlar mest om SQL och du kommer behöva de grundläggande kunskaperna i det för att kunna förstå koden.
Det hela går ut på att vi ska kolla vilken sida man är på i pagingen genom QueryString:
int CurrentPage; int PostCount = 0; // Använder vi sen int PostSize = 10; // Antal poster per sida
if (String.IsNullOrEmpty(Request.QueryString["Page"])) { CurrentPage = 1; } // Om inte Page har skrivits så är vi på sida 1 else { CurrentPage = Convert.ToInt32(Request.QueryString["Page"]); }
När vi hämtar posterna sen så kommer vi använda oss utav LIMIT (läs mer här). När vi hämtar posterna ska vi hämta från den sidan vi är på och 10 (PostSize) poster fram:
"SELECT * ORDER BY dtmDateTime DESC LIMIT " + (CurrentPage - 1) * PostSize + ", " + PostSize;
Vi tar CurrentPage - 1 enbart för att det ska bli rätt med LIMITen. För att hämta 10 poster och om man vill börja på den första så ska det stå LIMIT 0, 10. Därför tar vi bort 1 på CurrentPage.
Navigera
Nu har vi alltså vilken sida vi är på och SQL-koden för att hämta 10 poster beroende på vilken sida vi är på. Det vi ska göra nu är att skapa numreringen på sidorna så vi kan navigera i pagingen. Först så tar vi och räknar hur många poster det finns i databasen:
Först ska vi ge variabeln PostCount som vi skapade tidigare värdet som vi fick från SQL-koden som vi skrev innan (SELECT Count(*) as intCount FROM tabel)
Bra guide som hjälpte mig en massa även om jag själv använder MSSQL. Dock är det lite stavfel och så som ställde till det en del :P Bland annat så står alla sidlänkar med "apsx" istället för "aspx" ;)