Custom array paging in ASP.NET

Custom array paging in ASP.NET

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Odavno nisam napisao nesto pametno na temu .NETa Smile.

Sigurno ste hiljadu puta videli na sajtovima prv, druga, treca etc. strana nekog clanka ili necega slicnog.
.NET ima kontrole koje vec imaju ugradjene metode za custom paging, tj. za deljenje zapisa dobijenih iz nekog izvora (baza, txt fajl, xml fajl...) na nekoliko strana.

Sada cu vam predstaviti custom paging kako sam ga ja uradio za jedan projekat uz pomoc nizova.
Ovaj metod je upotrebljiv i za win forms, ali sam nekim manjim izmenama.

Izvor za ovaj primer ce nam biti folderi u izabranom folderu.

        ArrayList directory = new ArrayList(); // Cuvamo informacije o folderima         ArrayList date = new ArrayList(); // Cuvamo datum kreiranja foldera         int pageSize = 4; // Kolicina zapisa za jednu stranu         int currentPage = 0; // Trenutna stranica na kojoj se nalazimo         string folderExclude = "windows;program files;"; // Folder filter         string folderPath = "C:\\";         int i = 0;         DirectoryInfo dir = new DirectoryInfo(folderPath);         DirectoryInfo[] d = dir.GetDirectories("*");         foreach (DirectoryInfo s in d)         {            if (folderExclude.IndexOf(s.Name) == -1) // folder filter                 {                     directory.Add(s.Name.ToString());                     date.Add(s.CreationTime.ToString());                     i++;                 }         }         Response.Write("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">");               Response.Write("<tr>");                     Response.Write("<td style=\"height: 25px; width: 50%;\"><b>Folder name</b>");                     Response.Write("</td>");                     Response.Write("<td style=\"height: 25px; width: 50%;\"><b>Date created</b>");                     Response.Write("</td>");               Response.Write("</tr>");          // Odredjujemo odakle cemo da pocnemo sa citanjem iz niza.          // Primer: currentPage = 1, pageSize = 4          // 1 * 4 - 4 + 1 = 1; 1 * 4 = 4, sto znaci da ce petlja ici od 1 do 4, sto su cetiri zapisa          // Isto to vazi za bilo koju sledecu stranicu               for (i = currentPage * pageSize - pageSize + 1; i <= currentPage * pageSize; i++ )               {                      if (i >= directory.Count)                        break;                     Response.Write("<tr>");                     Response.Write("<td style=\"height: 25px;\"><a href=\" + folderPath + /" + directory[i - 1] + "/\">" + directory[i - 1]); // ime foldera                     Response.Write("</a></td>");                     Response.Write("<td style=\"height: 25px;\">" + date[i - 1]); // datum foldera                     Response.Write("</td>");                     Response.Write("</tr>");               }               Response.Write("<tr>");               Response.Write("<td style=\"height: 25px\" colspan=\"2\"><div align=\"left\" id=\"stranica\">");               Response.Write("<b>Stranica:</b> ");               int mat = (int)Math.Ceiling((decimal)directory.Count / pageSize); // Odredjujemo deljenjem broja foldera sa brojem stranica koliko strana treba da ima. Npr. ako nam je pageSize = 4, a imamo 7 foldera, to su dve strane.          // Petlja za ispisivanje brojeva stranica               for (i = 1; i <= mat; i++)               {                      // Kreiranje linkova za stranice                      if (i == currentPage)                          Response.Write(i + " | ");                      else                          Response.Write("<a href=\"Default.aspx?Page=" + i + "\">" + i + "</a> | ");               }               Response.Write("</div></td>");              Response.Write("</tr>");             Response.Write("</table>");


Ovaj code moze jos da se uredi, da se doda order i jos gomila stvari.
Samo pustite mastu.

Ako imate bilo kakvih pitanja, slobodno...


Happy coding...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 933 korisnika na forumu :: 44 registrovanih, 9 sakrivenih i 880 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: antosky, aramis s, attila.jukicburai, axa, babaroga2, BSD2, caesar2, darkangel2, darkstar101, Dimitrise93, doktor1964, Drug pukovnik, dtrivun, Duh sa sekirom, flash12, ivan979, JOntra2, krkalon, Kubovac, KUZMAR, lojola, majorgaspar, MaksicZoran, MarKhan, Marko Marković, mercedesamg, Metanoja, mgaji21, Milan A. Nikolic, Nebojsha Trajkovich, nem960802, Parker, pein, Penzula, repac, riva2, srbi, SsssssNOVI, USSVoyager, vlvl, vobo, Webb, zodiac94, zoran-ruma