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>&nbsp;</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的调用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值