一.前言
在上一版的DataList分页功能中,分页的按钮只有“第一页、上一页,下一页,最后一页”,在这次的DataList分页中,加入了用数字显示页码的功能,点击数字可以跳到相应的页面。
二.分页用户控件设计
1.页面设计
在显示上一页下一页的代码部分增加一个用于动态增加页面数字的span,<span id="divPageNum" runat="server"></span>,为了使数字和翻页控件保持保持在同一行,将其外层的div改成span,并在外层在套一层div,代码设计如下(更多设计参考《如何让DataList具有分页功能》:
<div style="text-align:center;">
<span runat="server" id="divPagingButtons" style ="text-align:center;">
<asp:LinkButton ID="lbtnFirstPage" runat="server" Font-Underline="False" CommandName="FirstPage" OnCommand="lbtn_Click">第一页</asp:LinkButton>
<asp:LinkButton
ID="lbtnPreviousPage" runat="server" CommandName="PreviousPage" OnCommand="lbtn_Click">上一页</asp:LinkButton>
<span id="divPageNum" runat="server"></span>
<asp:LinkButton ID="lbtnNextPage"
runat="server" CommandName="NextPage" OnCommand="lbtn_Click">下一页</asp:LinkButton>
<asp:LinkButton ID="lbtnLastPage" runat="server" CommandName="LastPage" OnCommand="lbtn_Click">最后一页</asp:LinkButton> </span>
</div>
2.后台代码设计
编写用于显示页面数字的函数:
/// <summary>
/// 增加页面数字显示
/// </summary>
private void AddLinkPageNum()
{
int totalPages = (TotalRecordCount + PageSize - 1) / PageSize;
divPageNum.Controls.Clear();
if (totalPages == 1||!AllowPaging) return;
for (int i = 0; i < totalPages; i++)
{
//显示链接
if (i != CurrentPage)
{
LinkButton lbtn = new LinkButton();
lbtn.ID = "lbtn" + i.ToString();
lbtn.Text = Convert.ToString(i + 1);
lbtn.ToolTip = "转到第" + lbtn.Text + " 页";
lbtn.Click += new EventHandler(PageClick);
divPageNum.Controls.Add(lbtn);
}
else//显示文字
{
Literal li = new Literal();
li.Text = Convert.ToString(i + 1);
li.ID = "li" + i.ToString();
divPageNum.Controls.Add(li);
}
}
}
在此函数中根据页面总页数动态项页面输出数字按钮,选中的数字不具有点击的事件,其他数字有点击的事件响应函数,此函数定义如下:
/// <summary>
/// 直接点击页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PageClick(Object sender, EventArgs e)
{
LinkButton hlSender = (LinkButton)sender;
int index = Convert.ToInt32(hlSender.Text) - 1;
CurrentPage = index;
PageIndexChanging(this, index);
}
当点击某个数字时,当前选定页面就为相应数值代表的页面,并激活分页事件PageIndexChanging重新进行数据绑定。
在PageLoad事件函数和DataBind函数后面增加对函数AddLinkPageNum的调用。
三.运行结果
为了展示显示效果,吧数据库的数据记录增加到几十条,运行后的页面效果如下:
四.源码
点击以下链接下载源码:
CSDN啊,为什么要到空间才能上传文件呢?上传后还死命不显示,不知道跑到哪里去了,重新上传又说已经有同名文件了,绕了地球一圈又回到原地,没办法,还是用图片的方式,要用右键来下载啊。浪费了我半个小时,谋财害命啊!