如何让DataList具有分页的功能 2(asp.net)

5 篇文章 0 订阅

一.前言

在上一版的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>&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的调用。

三.运行结果

为了展示显示效果,吧数据库的数据记录增加到几十条,运行后的页面效果如下:

四.源码

点击以下链接下载源码

CSDN啊,为什么要到空间才能上传文件呢?上传后还死命不显示,不知道跑到哪里去了,重新上传又说已经有同名文件了,绕了地球一圈又回到原地,没办法,还是用图片的方式,要用右键来下载啊。浪费了我半个小时,谋财害命啊!

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值