首页 > 学院 > 开发设计 > 正文

使用DataList实现数据分页的技术

2019-11-14 14:17:51
字体:
来源:转载
供稿:网友

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

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

属    性说    明
AllowPaging

获取或设置是否启用分页

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

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

DataSource

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

PageSize

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

PageCount

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

FirstIndexPage

获取页中的第一个索引

IsFirstPage

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

IsLastPage

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

DataKeyField

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

DataKeys

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

大致实现效果图如下:

具体代码如下:

前台(aspx)代码:

<div class="you_align">        <table style="width:450px" cellpadding="0" cellspacing="0" align="center" >            <tr><td>&nbsp;</td></tr>            <tr>               <td style="width: 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>");    }}

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表