下面就来重点说说这几种分页方式:
一般情况下我们都是通过sql语句来分页,这在无论哪种开发语音都是通用的,
使用sql语句或者存储过程分页的方式最主要的是要在读取数据的时候把sql语句或者存储过程写好,它的原理是只读取当前要显示的几行记录,所以要根据页数和每页显示的数目来写语句,如下:
Select top pageSize * from News where id not in(select top (Page-1)*pageSize id from News)
很显然只要将pageSize和Page作为参数就可以了,然后再前台调用的时候只要指定当前页数和每页显示的数目,就可以实现分页了,为了显示总数目,还可以读取所有数目,需要注意的时候,如果是自定义分页视图,由于.net在回传的时候不保存当前页,所以要使用ViewState来保存页数,每次只读取所需要的几条记录,所以适合做大型网站数量比较大的时候使用
另外一种分页方式就是使用.net提供的PageDataSource类来分页,
PageDataSource是微软提供一个用于分页使用的类,集成了绑定控件的一些方法,在使用的时候,我们只需要从数据库读取我们所要的数据,绑定到PageDataSource即可,然后允许PageDataSource可以分页,指定当前页和每页要显示的数目,这样就可以很好的获得的总的数目,结合控件,ViewState就可以完成自定义分页视图,方法如下:
PagedDataSource pageDataSource = new PagedDataSource();
pageDataSource.DataSource = NewsManager.GetNews();//所有记录
pageDataSource.AllowPaging = true;
pageDataSource.PageSize = 16;
pageDataSource.CurrentPageIndex = Pager– 1;
this.Repeater1.DataSource = pageDataSource;
this.Repeater1.DataBind();
由于PageDataSource是将所有的数据都读出来,然后再分页的,所有适合一些小型网站,比如企业站,数量不是很大的时候使用,大概2w以内的数据使用
上面是常用的两种分页方式,下面在来看看分页视图控件AspNetPager的用法:
AspNetPager属于第三方控件,就是说既不是微软开发的,也不是你开发的,而是由其他技术员自己开发的,共享给我们用的控件,所以在使用的时候,我们首先要从网上下载下来,然后和其他控件一样,首先将其放到工具箱内,这里你可以直接拖进来,或者也可以右击工具菜单项---选择项,找到目录添加进来即可
下面简单说一下它的一些属性和方法
AlwaysShow:表示当前在只有一页的时候,控件是显示还是不显示
PageSize:每页要显示的数目
RecordCount:总数目
NumericButtonCount:每页要显示的页码数目
注:上面三个属性就是用来显示分页控件的视图,但是他们只是为了显示分页控件的视图。
FirstPageText="第一页"
LastPageText="最后一页"
NextPageText="下一页"
PrevPageText="前一页"
PagingButtonSpacing="12":每个页码之间的宽度
NumericButtonTextFormatString="[{0}]" :页码显示的样式
EnableUrlRewriting="true":是否启用url重写,默认的情况下是域名?page=页码
如:http://www.hnzbtb.com/NewList.aspx?page=3,不过你可以对其修改 重新
UrlRewritePattern:重写的url,如:AspNetPager1.UrlRewritePattern = "NewList.aspx?dd={0}"
注:这里要提到的是如果要改变要显示页码的参数,那就必须修改显示,然后再修改url中的参数
UrlPaging="True" :是否只用url传递参数来显示分页,如果是FALSE,则url不变,状态栏则显示
SubmitButtonText="转到" ShowInputBox="Always":用来解决转到按钮的显示
两个常用的方法
1、PageChanging:分页之前的操作,所以要想获得当前控件的页码就必须在方法内赋值才可以,否则AspNetPager1.CurrentPageIndex永远获得的当前页的值都是1,因为就相当于你没点击任何页码,从开始都是1,所以你无论点击那个页码说,之前的都是1
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
Pager = e.NewPageIndex - 1;
DataBindNews();
}
public void DataBindNews()
{
PagedDataSource pageDataSource = new PagedDataSource();
pageDataSource.DataSource = NewsManager.GetNews();
pageDataSource.AllowPaging = true;
AspNetPager1.RecordCount = NewsManager.GetNewsCount();
pageDataSource.PageSize = 16;
pageDataSource.CurrentPageIndex = Pager;
this.Repeater1.DataSource = pageDataSource;
this.Repeater1.DataBind();
}
之所以减1是因为要结合的分页方法和PageDataSource都是从0开始的
GrilView中自定义的分页,我们也会用到它的
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
dataBindProduct(0, null);
}
2、PageChanged:点击页码之后的操作,所以可以直接通过AspNetPager1.CurrentPageIndex – 1获得当前页的页数,因为之前确实点击了页码数,很显然会获得当前的页码数
protected void AspNetPager1_PageChanged(object src,EventArgs e)
{
DataBindNews();
}
public void DataBindNews()
{
PagedDataSource pageDataSource = new PagedDataSource();
pageDataSource.DataSource = NewsManager.GetNews();
pageDataSource.AllowPaging = true;
AspNetPager1.RecordCount = NewsManager.GetNewsCount();
pageDataSource.PageSize = 16;
pageDataSource.CurrentPageIndex = AspNetPager1.CurrentPageIndex – 1;
this.Repeater1.DataSource = pageDataSource;
this.Repeater1.DataBind();
}
如果使用了AspNetPager来分页,那么只要指定总数给aspNetPager,当前页用aspNetPager来指定,并保证每页显示的数目aspNetPager和PageDataSource指定的一致就可以实现分页了,简单吧,这个页数的控制就不使用viewstate来保存了,页数和页显示记录直接通过Asp.Net来控制就行了
需要注意的是有些需要一致的东西,如果没有一致,就有可能导致不协调,比如该分4页的,但是aspNetPager只显示了2页等,这些都需要注意的!
下面简单分享一下分页控件的一个样式:
Css样式:
.pages
{
color: #999;
}
.pages a, .pages .cpb
{
text-decoration: none;
float: left;
padding: 0 5px;
border: 1px solid #075198;
background: #ffff;
margin: 0 2px;
font-size: 11px;
color: #000;
}
.pages a:hover
{
background-color: #075198;
color: #fff;
border: 1px solid #075198;
text-decoration: none;
}
.pages .cpb
{
font-weight: bold;
color: #fff;
background: #075198;
border: 1px solid #075198;
}
相关推荐:
gif在线制作网站大全,网站GIF图片无法保存?
外贸公司网站制作哪家好,maersk船公司官网?
javascript parseInt 大改造
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
asp 采集程序常用函数分析
网站制作教程视频教程,怎样制作一个网站?
上海网站制作公司,上海自媒体公司?
制作一个网站的流程有哪些,怎样注册网站?
专业网站制作的公司有哪些,12306网站是什么公司做的啊?
网站制作方法有哪些,怎样制作自己的网页?
商务网站设计制作流程,电子商务网站设计应注意哪些问题?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
oracle 优化的一点体会
让iframe子窗体取父窗体地址栏参数(querystring)
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
专业网站制作设计公司有哪些,国外除了behance,pinterest还有什么好的设计网站不?
,东莞公租房网上申请入口?
公司网站制作需要多少钱,公司公示怎么做?
北京制作网站的公司,北京铁路集团官方网站?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
php面向对象全攻略 (十六) 对象的串行化
山东制作网站方案,村级网格员职责?
三网主机加速引擎 三代功能助网站腾飞
海报制作网站免费,有什么软件可以做海报?
jQuery技巧大放送 学习jquery的朋友可以看下
C# 获取程序集版本、文件版本
长春网站建设制作,dw如何新建网页?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
小学生作文妙语 开怀大笑作品
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
MySQL 转义字符使用说明
太平洋网站制作公司,网络用语太平洋是什么意思?
,杭州劳动仲裁怎么在线上申请?
惠东网站制作公司,惠州小学抽考成绩排名去哪里查询?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
网站设计制作一条龙,如何简单制作自己的网站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
怎样制作一个网站链接,制作一个动态网页的步骤?
永州网站制作公司,指标生录取通知几时收到?
JSP bean获取各种参数
通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据
php 不同编码下的字符串长度区分
大连网站制作公司哪家好一点,大连买房网站哪个好?
长沙做网站要多少钱,长沙国安网络怎么样?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
CSS 美化表格边框为凹陷立体效果的实现方法
一个JS小玩意 几个属性相加不能超过一个特定值.
MSSQL 多字段根据范围求最大值实现方法
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
微课制作网站有哪些,微课网怎么进?