Odavno nisam napisao nesto pametno na temu .NETa .
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...
|