zoukankan      html  css  js  c++  java
  • 使用DataList实现数据分页的技术

    今天做网站的时候,用到了分页技术,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们。

    DataList控件可以按照列表的形式显示数据表中的多行记录,但是被显示的多行记录没有分页功能,使用起来不太方便。因此需要借助PagedDataSource类来实现分页,该类封装了数据控件的分页属性,其常用属性及说明如下表所示。

    属    性 说    明
    AllowPaging

    获取或设置是否启用分页

    AllowCustomPaging 获取或设置是否启用自定义分页

    CurrentPageIndex 获取或设置当前显示页的索引

    DataSource

    获取或设置用于填充控件中项的源数据

    PageSize

    获取或设置要在数据绑定控件的每页上显示的项数

    PageCount

    获取显示数据绑定控件中各项所需的总页数

    FirstIndexPage

    获取页中的第一个索引

    IsFirstPage

    获取一个值,该值指示当前页是否是首页

    IsLastPage

    获取一个值,该值指示当前页是否是最后一页

    DataKeyField

    获取或设置由DataSource属性指定的数据源中的键字段

    DataKeys

    获取存储在数据列表控件中的每个记录的键值

    大致实现效果图如下:

    具体代码如下:

    前台(aspx)代码:

    <div class="you_align">
            <table style="450px" cellpadding="0" cellspacing="0" align="center" >
                <tr><td>&nbsp;</td></tr>
                <tr>
                   <td style=" 600px; text-align: align; font-size: 9pt; height: 15px;" >
                      <asp:Label ID="labCP" runat="server" Text="当前第"></asp:Label>
                         <asp:Label ID="labPage" runat="server" Text="1"></asp:Label> &nbsp;页
                      <asp:Label ID="labTP" runat="server" Text=""></asp:Label>
                         <asp:Label ID="labBackPage" runat="server"></asp:Label><asp:LinkButton ID="lnkbtnOne" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnOne_Click">第一页</asp:LinkButton>
                      <asp:LinkButton ID="lnkbtnUp" runat="server" Font-Underline="False" ForeColor="Red"  OnClick="lnkbtnUp_Click">上一页</asp:LinkButton>
                      <asp:LinkButton ID="lnkbtnNext" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnNext_Click">下一页</asp:LinkButton>&nbsp;
                      <asp:LinkButton ID="lnkbtnBack" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnBack_Click">尾页</asp:LinkButton>&nbsp;&nbsp;
                   </td>
                </tr>
        </table>
        </div>

    后台aspx.cs代码如下:

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    public partial class zwgk : System.Web.UI.Page
    {
        CommonClass CC = new CommonClass();
     protected void Page_Load(object sender, EventArgs e)
        {
            bind();        
            //政务公开
            ZWGK.DataSource = CC.GetDataSet("SELECT  * FROM News WHERE Style = '政务公开' order by Time Desc", "News");
            ZWGK.DataKeyField = "id";
            ZWGK.DataBind();
        }
        protected void bind()
        {
            //取得当前页的页码
            int curpage = Convert.ToInt32(this.labPage.Text);
            //使用PagedDataSource类实现DataList控件的分页功能
            PagedDataSource ps = new PagedDataSource();
            //获取数据集
            DataSet ds = CC.GetDataSet("select * from News where style='政务公开' order by Time Desc", "News");
            ps.DataSource = ds.Tables["News"].DefaultView;
            //是否可以分页
            ps.AllowPaging = true;
            //显示的数量
            ps.PageSize = 15;
            //取得当前页的页码
            ps.CurrentPageIndex = curpage - 1;
            this.lnkbtnUp.Enabled = true;
            this.lnkbtnNext.Enabled = true;
            this.lnkbtnBack.Enabled = true;
            this.lnkbtnOne.Enabled = true;
            if (curpage == 1)
            {
                //不显示第一页按钮
                this.lnkbtnOne.Enabled = false;
                //不显示上一页按钮
                this.lnkbtnUp.Enabled = false;
            }
            if (curpage == ps.PageCount)
            {
                //不显示下一页
                this.lnkbtnNext.Enabled = false;
                //不显示最后一页
                this.lnkbtnBack.Enabled = false;
            }
            //显示分页数量
            this.labBackPage.Text = Convert.ToString(ps.PageCount);
            //绑定DataList控件
            this.ZWGK.DataSource = ps;
            this.ZWGK.DataKeyField = "id";
            this.ZWGK.DataBind();
    
        }
        //第一页
        protected void lnkbtnOne_Click(object sender, EventArgs e)
        {
            this.labPage.Text = "1";
            this.bind();
        }
        //上一页
        protected void lnkbtnUp_Click(object sender, EventArgs e)
        {
            this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1);
            this.bind();
        }
        //下一页
        protected void lnkbtnNext_Click(object sender, EventArgs e)
        {
            this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1);
            this.bind();
        }
        //最后一页
        protected void lnkbtnBack_Click(object sender, EventArgs e)
        {
            this.labPage.Text = this.labBackPage.Text;
            this.bind();
        }
        protected void ZWGK_ItemCommand(object source, DataListCommandEventArgs e)
        {
            int id = Convert.ToInt32(ZWGK.DataKeys[e.Item.ItemIndex].ToString());
            Response.Write("<script language=javascript>location='show_News.aspx?id=" + id + "'</script>");
        }
    }
  • 相关阅读:
    领扣(LeetCode)七进制数 个人题解
    ie固定table单元格宽度
    js 阻止冒泡
    在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示(转)
    WebStorm 6.0 与 7.0 注册码
    统制Highcharts中x轴和y轴坐标值的密度
    ie版本
    flash透明 处于最低
    eclipse svn --
    jquery---- 数组根据值进行删除
  • 原文地址:https://www.cnblogs.com/qijunjun/p/5171517.html
Copyright © 2011-2022 走看看