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.

  1. ArrayList directory = new ArrayList(); // Cuvamo informacije o folderima
  2. ArrayList date = new ArrayList(); // Cuvamo datum kreiranja foldera
  3. int pageSize = 4; // Kolicina zapisa za jednu stranu
  4. int currentPage = 0; // Trenutna stranica na kojoj se nalazimo
  5. string folderExclude = "windows;program files;"; // Folder filter
  6. string folderPath = "C:\\";
  7.  
  8. int i = 0;
  9. DirectoryInfo dir = new DirectoryInfo(folderPath);
  10. DirectoryInfo[] d = dir.GetDirectories("*");
  11.  
  12. foreach (DirectoryInfo s in d)
  13. {
  14.            if (folderExclude.IndexOf(s.Name) == -1) // folder filter
  15.         {
  16.             directory.Add(s.Name.ToString());
  17.             date.Add(s.CreationTime.ToString());
  18.             i++;
  19.         }
  20. }
  21.  
  22.  
  23. Response.Write("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">");
  24.       Response.Write("<tr>");
  25.             Response.Write("<td style=\"height: 25px; width: 50%;\"><b>Folder name</b>");
  26.             Response.Write("</td>");
  27.             Response.Write("<td style=\"height: 25px; width: 50%;\"><b>Date created</b>");
  28.             Response.Write("</td>");
  29.       Response.Write("</tr>");
  30.  
  31.  
  32.          // Odredjujemo odakle cemo da pocnemo sa citanjem iz niza.
  33.          // Primer: currentPage = 1, pageSize = 4
  34.          // 1 * 4 - 4 + 1 = 1; 1 * 4 = 4, sto znaci da ce petlja ici od 1 do 4, sto su cetiri zapisa
  35.          // Isto to vazi za bilo koju sledecu stranicu
  36.       for (i = currentPage * pageSize - pageSize + 1; i <= currentPage * pageSize; i++ )
  37.       {
  38.              if (i >= directory.Count)
  39.                break;
  40.  
  41.             Response.Write("<tr>");
  42.             Response.Write("<td style=\"height: 25px;\"><a href=\" + folderPath + /" + directory[i - 1] + "/\">" + directory[i - 1]); // ime foldera
  43.             Response.Write("</a></td>");
  44.             Response.Write("<td style=\"height: 25px;\">" + date[i - 1]); // datum foldera
  45.             Response.Write("</td>");
  46.             Response.Write("</tr>");
  47.       }
  48.  
  49.  
  50.       Response.Write("<tr>");
  51.       Response.Write("<td style=\"height: 25px\" colspan=\"2\"><div align=\"left\" id=\"stranica\">");
  52.  
  53.       Response.Write("<b>Stranica:</b> ");
  54.  
  55.       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.
  56.  
  57.  
  58.  
  59.          // Petlja za ispisivanje brojeva stranica
  60.       for (i = 1; i <= mat; i++)
  61.       {
  62.              // Kreiranje linkova za stranice
  63.              if (i == currentPage)
  64.                  Response.Write(i + " | ");
  65.              else
  66.                  Response.Write("<a href=\"Default.aspx?Page=" + i + "\">" + i + "</a> | ");
  67.       }
  68.  
  69.  
  70.       Response.Write("</div></td>");
  71.      Response.Write("</tr>");
  72.     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 1118 korisnika na forumu :: 62 registrovanih, 8 sakrivenih i 1048 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Aleksandar Tomić, alexbr, Avalon015, Bane san, bpop, Bubi, cifra, Clouseau, darkojbn, Dolinc, Dorcolac, dradex, ElGenius, esx66, GveX, HrcAk47, hyla, ikan, Ir, ivan1973, jackreacher011011, janezek67, JankoS, Jaz, Jezekijel, kib, komsija1, kutija11, ladro, Lazarus, ljuba, lord sir giga, M74AB3, Magistar78, MarkoD, Marky, mikidragi, Miloskec, milutin134, nuke92, opt1, Pero, Pilence, Pilipenda, Plavi1, PMsnow, powSrb, PrincipL, proka89, raf87, raster12, stegonosa, synergia, Tafocus, Tribal, Trpe Grozni, Visionary, Vlada1389, zdrebac, Zorge, Đole64, 800077