使用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="" cellspacing="" align="center" >
<tr><td> </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=""></asp:Label> 页
<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>
<asp:LinkButton ID="lnkbtnBack" runat="server" Font-Underline="False" ForeColor="Red" OnClick="lnkbtnBack_Click">尾页</asp:LinkButton>
</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 = ;
//取得当前页的页码
ps.CurrentPageIndex = curpage - ;
this.lnkbtnUp.Enabled = true;
this.lnkbtnNext.Enabled = true;
this.lnkbtnBack.Enabled = true;
this.lnkbtnOne.Enabled = true;
if (curpage == )
{
//不显示第一页按钮
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 = "";
this.bind();
}
//上一页
protected void lnkbtnUp_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - );
this.bind();
}
//下一页
protected void lnkbtnNext_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + );
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>");
}
}
使用DataList实现数据分页的技术的更多相关文章
- 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页
在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...
- 数据分页处理系列之二:HBase表数据分页处理
HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...
- Studio for ASP.NET Wijmo:使用 C1Pager 对 DataList 控件分页
Studio for ASP.NET Wijmo 控件值得称赞的一点是它不仅仅单独为 C1 控件而开发.还可以配合其他控件使用,也正体现了C1控件为提高开发人员工作效率而设计的宗旨.简单的举一个例子, ...
- js静态数据分页展示
拿vue做示例 首先定义data data() { return { tableData: [], // 当前页的数据,用于给表格展示用的 tableDataAll: [], // 需要拿来分页的总数 ...
- HBase表数据分页处理
HBase表数据分页处理 HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人 ...
- 微信小程序云开发-列表数据分页加载显示
一.准备工作 1.创建数据库nums,向数据库中导入108条数据 2.修改数据库表nums的权限 二.新建页面ListPaginated 1.wxml文件 <!-- 显示列表数据 --> ...
- mysq大数据分页
mysql limit大数据量分页优化方法 Mysql的优化是非常重要的.其他最常用也最需要优化的就是limit.Mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急 ...
- Sql Server 数据分页
http://www.cnblogs.com/qqlin/archive/2012/11/01/2745161.html 1.引言 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了 ...
- Oracle、MySql、SQLServer数据分页查询
看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...
随机推荐
- bootstrap-table分页第二篇 延续上一篇的
这个是service/** * 返回记录数 * @return */ public Integer getPageTotal(Integer userid); //service的实现类 public ...
- javascript 核心语言笔记 4 - 表达式和运算符
表达式(expression)是 JavaScript 中的一个短语(phrases),JavaScript 解释器会将其计算(evaluate)出一个结果.程序中的常量.变量名.数组访问等都是表达式 ...
- Docker常用命令大全
1. 查看docker信息(version.info) # 查看docker版本 $docker version # 显示docker系统的信息 $docker info 2. 对image的操作(s ...
- C#获取屏幕鼠标所指点的颜色
有时候要获取屏幕某一点的坐标颜色值,可以如下实现: 在VS2012中创建一个C#的Windows窗口应用程序,然后在Form上添加PictureBox和Button两个控件,并加入以下代码. //需要 ...
- 3.2 配置构建Angular应用——简单的笔记存储应用
本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...
- PHP webservice的使用
提到php的webservice.之前还是比较陌生的,因为接触的少呀,几乎在所有的公司中没用过,仅仅用过的一次好像是接入一个第三方的短信通道,用的是SOAP|WSDL. 一个很极端的话“webserv ...
- Android 敏感 API 的说明
从中国的国情来看,Google 的诸多产品,包括 gmail,Android 官方市场 Google Play 正处于并将长期处于访问不了的状态.国内几亿网民也要生活,于是墙内出现了“百家争鸣”的场面 ...
- 解决C# WinForm Graphics绘制闪烁问题
不直接使用form的CreateGraphics创建Graphics进行绘制,可以先在Form上面放一个需要大小的PictureBox,再创建一个同大小的Bitmap,将这个Bitmap设置为Pict ...
- 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法
mysql,mysqldump,Mysqladmin,php连接mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL se ...
- [原创]Centos7 从零编译Nginx+PHP+MySql
序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...