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

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

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>");
    }
}
时间: 2024-11-10 00:56:32

使用DataList实现数据分页的技术的相关文章

PHP+Mysql————数据分页显示技术

通常情况下,一个页面加载大量的数据时,数据不可能同时显示出来.这时候,比较常用的方法就是滚动条和分页.看过电子书的孩子都知道,电子书那么多字,一个手机或pad的屏幕是无法全部显示的,开玩笑,一本几兆的书就好几百万字,一下子放到几寸的屏幕上,不得亮瞎你的眼.所以我们都是下滑使文字进行滚动或翻页.这篇博文就用来分享一下php的分页技术. 首先获取数据库中某表的数据,输出到网页上,然后再进行分页显示.一句话就讲明白了,但具体怎么分页的,请看代码. <?php header("content-ty

asp数据分页显示技术(上下页版)

<%set rs=server.CreateObject("adodb.recordset")sql="select * from [student_admin] order by id DESC"rs.open sql,conn,1,3%><%rs.pagesize=15'这个是显示最新的8条记录,可以按自己需要改curpage=Request.QueryString("curpage")'记录页码数if curpage=&q

Struts2+Hibernate3+Spring三大框架技术实现MySQL数据分页

原文:Struts2+Hibernate3+Spring三大框架技术实现MySQL数据分页 源代码下载地址:http://www.zuidaima.com/share/1550463494638592.htm 本项目采用了Struts2,Hibernate3,Spring三框架技术来实现对MySQL中的数据进行分页,在本机上面测试通过了,特此分享 java源代码截图:

【知了堂学习笔记】JSP页面数据分页实现(一)——分页概念以及主流数据库的分页查询

一.分页简介 1.分页,就是一种将数据库里的数据一部分展示给用户的技术.为什么要这样做呢?因为一般来说用户在查询时数据是非常多的,当一个页面不能显示所有数据时,我们就要对查询的数据进行分页,就像我们的书本分成一页一页一样.最简单的例子就是百度,当你百度时,成千上万的数据,并不是呈现在一个页面的. 2.分页的实现方式 1)假分页(不推荐):什么是假分页呢?假分页就是一次性将数据库里的数据全部取出来,存储在页面中,然后再将数据分别展示出来.这种假分页在数据少的还可以玩玩,当数据多起来的时候,这种方式

大数据分页实现与性能优化

摘要:Web 应用程序中经常使用数据分页技术,该技术是提高海量数据访问性能的主要手段.实现web数据分页有多种方案,本文通过实际项目的测试,对多种数据分页方案深入分析和比较,找到了一种更优的数据分页方案Row_number()二分法.它依靠二分思想,将整个待查询记录分为2部分,使扫描的记录量减少一半,进而还通过对数据表及查询条件进行优化,实现了存储过程的优化.根据Row_number()函数的特性,该方案不依赖于主键或者数字字段,大大提高了它在实际项目中的应用,使大数据的分页效率得到了更显著的提

DataList的使用 分页 用Button删除 编辑 datalist中的内容 数据源的绑定 及表格的使用

以前没接触过datalist  这次做项目第一次使用它   遇到一些问题  所以跟大家分享一下  以后遇到问题可以节约点时间  先来个效果图吧   先来说模版八   我用的是ItemTemplate模块   1:先在页面中假如datalist控件  接下来我们编辑模块选择ItemTempalte选项 然后结束模版编辑  2:数据源的绑定   数据源根据你自己的情况来选择 我的数据在sql中  所以选的这个   按上面表好的步骤操作    4是你自己的数据库名称   测试成功后一路默认选择下一步 

数据分页处理系列之二:HBase表数据分页处理

  HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写一个HBase方面的技术专题,有兴趣的朋友们可以稍微的期待一下.不过本章节的重点是介绍下HBase表数据的分页处理,其他的就不多说了. 首先说一下表数据分页中不可回避的一个指标:总记录数.在关系数据库中很容易统计出记录总数,但在HBase中,这却是一个大难题,至少在目前,朋友们根本不要奢望能够通过类

【干货】再上数据分页控件 ━ 更加灵活,更加实用-提供源码

再上数据分页控件-更加灵活,更加实用 关于数据分页的文章太多了,各有各的一套方案,但大多都很类似,要么使用存储过程,要么直接使用代码进行分页.各种方案分页的效率也不尽相同,我们不一定要找一个最高效的(根据实际的项目情况),找一个最合适的就OK了.下面我要谈的分页控件非常灵活,可以支持任意类型的数据库,同时可以支持存储过程或代码分页(会自动判断),也支持多表的分页,非常的方便.对于数据分页的相关文章,在我的博客中可以找到很多,下面我做一个简单的汇总,方便大家查阅. 1. 原创企业级控件库之大数据量

最好用的兼容多种数据库通用高效的大数据分页功能

通用权限管理系统底层有一个通用分页查询功能,该功能可实现多种数据库的查询,支持多表关联分页查询,目前是最完善的分页功能实现. 下面代码是使用的方法截图: /////////////////////////////// 后台代码截图1 /////////////////////////////// 后台代码截图2 /////////////////////////////// 后台代码截图3 /////////////////////////////// 后台代码截图4 /////////////