See following, Google uses “start” query string parameter.
To create search engine style pagination in asp.net, see following method. It takes 3 parameters:
1. totalRecords
2. pageSize
3. totalNumericLinks : total number of numeric links. It is 20 in above image.
string GetPaging(int totalRecords, int pageSize, int totalNumericLinks)
{
if (totalRecords <= pageSize)
{
return "";
}
StringBuilder str = new StringBuilder();
//Get Total no of pages
int totalPages = totalRecords / pageSize + (totalRecords % pageSize > 0 ? 1 : 0);
//Get Current Page no
int currentPageNo = 1;
string pageUrl = Context.Request.Url.AbsolutePath;
if (Context.Request.QueryString["start"] != null)
{
currentPageNo = 1 + (Convert.ToInt32(Context.Request.QueryString["start"]) - 1) / pageSize;
}
//Add previous button
if (currentPageNo > 1)
{
str.Append(string.Format(" <a href=\"" + pageUrl + "?start={0}\" title=\"Previous page\"><Prev</a>", (currentPageNo - 2)*pageSize + 1));
}
//Add Numeric link
int sp, ep;
if (totalNumericLinks >= totalPages)
{
sp = 1;
ep = totalPages;
}
else
{
if (currentPageNo - totalNumericLinks / 2 > 0)
{
ep = (currentPageNo + totalNumericLinks / 2 - (totalNumericLinks-1)%2);
ep = ep < totalPages ? ep : totalPages;
}
else
{
ep = totalNumericLinks;
}
sp = ep - totalNumericLinks+1 > 0?ep - totalNumericLinks+1:1;
}
for (int p = sp; p <= ep; p++)
{
//For Current Page, No Link, Bold Text
if (p == currentPageNo)
{
str.Append(String.Format(" <b>{0}</b>", p.ToString()));
}
else
{
str.Append(String.Format(" <a href=\"" + pageUrl + "?start={1}\" title=\"{0}\">{0}</a> ", p, (p - 1) * pageSize + 1));
}
}
//Add Next button
if (currentPageNo < totalPages)
{
str.Append(String.Format(" <a href=\"" + pageUrl + "?start={0}\" title=\"Next page\">Next></a>", (currentPageNo * pageSize +1).ToString()));
}
return str.ToString();
}
Hope ! It helps.
No comments:
Post a Comment