下面为大家奉上我自己写的一个数字分页代码,供初学者参考,里面不乏漏洞,请大家指正。
分页技术分三块,前台页面,后台程序,CSS样式。
1. 前台页面。该页面只需放置一个DIV在需要显示页码的地方即可,代码如下:
<div id="pagediv" runat="server" />
2. 后台程序。C#编写,已经写成一个函数,可以将此函数放置在公共页面共调用,代码如下:
public void Paging(int totalrecord, int PageSize, int DigitNo, Control pagediv, Control rpt,string table,string id)
{
int CurrentPage, PageStart, PageEnd, TotalPage;
//****************************************//计算总页数
int pn1 = totalrecord / PageSize, pn2 = totalrecord % PageSize;
if (pn2 != 0)
TotalPage = pn1 + 1;
else
if (pn1 == 0)
TotalPage = 1;
else
TotalPage = pn1;
//****************************************
if (Request.QueryString["page"] == null)//获取当前页码
CurrentPage = 1;
else
CurrentPage = Convert.ToInt16(Request.QueryString["page"]);
PageStart = 1;//起始数字逻辑判断
if (CurrentPage >= DigitNo + 2)
PageStart = CurrentPage - DigitNo;
PageEnd = CurrentPage + DigitNo;//结束数字逻辑判断
if (PageEnd > TotalPage + 1)
PageEnd = TotalPage + 1;
if (CurrentPage != 1)
{
HyperLink FP = new HyperLink();//生成首页文字按钮
FP.Text = "首页"; FP.Style["color"] = "#06C";
FP.NavigateUrl = "?page=1";
HyperLink PP = new HyperLink();//生成上一页文字按钮
PP.Text = "上一页"; PP.Style["color"] = "#06C";
PP.NavigateUrl = "?page=" + (CurrentPage - 1);
pagediv.Controls.Add(FP);//将文字分页按钮装入pagediv容器
pagediv.Controls.Add(PP);
}
for (int i = PageStart; i < PageEnd; i++)//生成中间数字按钮,并进行相关判断
{
HyperLink no = new HyperLink();
no.Text = i.ToString();
no.NavigateUrl = "?page=" + i;
no.CssClass = "pagediv";
if (i == CurrentPage)
{
no.Enabled = false;
no.CssClass = "current";
}
pagediv.Controls.Add(no);//将数字分页按钮装入pagediv容器
}
if (CurrentPage != TotalPage)
{
HyperLink LP = new HyperLink();//生成尾页文字按钮
LP.Text = "尾页"; LP.Style["color"] = "#06C";
LP.NavigateUrl = "?page=" + TotalPage;
HyperLink NP = new HyperLink();//生成下一页文字按钮
NP.Text = "下一页"; NP.Style["color"] = "#06C";
NP.NavigateUrl = "?page=" + (CurrentPage + 1);
pagediv.Controls.Add(NP);//将文字分页按钮装入pagediv容器
pagediv.Controls.Add(LP);
}
//绑定数据库******************************降序排列
int StartIndex = (CurrentPage - 1) * PageSize + 1;
Repeater repeater = (Repeater)rpt;
repeater.DataSource = DT("select top " + PageSize + " * from "+table+" where "+id+" <= (select min("+id+") from (select top " + StartIndex + " " + id + " from "+table+" order by "+id+" desc)) order by "+id+" desc");
repeater.DataBind();
}
3. CSS样式。对pagediv空间的样式定义,如下:
#pagediv{text-align:right;width:98%;margin:10px 20px 20px 0}
#pagediv a{float:right;padding:5px 10px 5px 10px;margin:5px;border:1px solid #dde7c5;text-decoration:none;color:#06C;display:block;}
#pagediv a:link{}
#pagediv a:visited{color:#f60;}
#pagediv a:hover{background-color:#ebebeb;}
#pagediv a:active{}
.current{padding:5px 10px 5px 10px;margin:5px;color:#000;font-weight:bold;text-decoration:none;display:block;}