文章 | 入侵攻击 | 安全防御 | 操作系统 | 网站建设 | 网络编程 | 路由交换 | 灾难恢复 | 新闻资讯 | 安全公告
下载 | 漏洞扫描 | 加密破解 | 入侵攻击 | 后门木马 | 溢出程序 | 综合工具 | 安全防护 | 原创发布 | 动画教程
论坛 | 黑客军火 | 配服务器 | 黑客情感 | 免费资源 | 美女贴图 | 灌水无罪 | 在线服务 | 会员照片 | 网站首页
 当前位置:主页 >> 技术文摘 >> 网络编程 >> NET编程 >> 文章内容  
 

 
用PagedDataSource类实现DataList和Repeater分页

www.hx99.org 阅读: 时间:2007-07-12 整理:华西黑盟
------------------------------------------------------------------
 用PagedDataSource类实现DataList和Repeater分页

Asp.net提供了三个功能强大的列表控件:DataGrid、DataList和Repeater控件,但其中只有DataGrid控件提供分页功能。相对DataGrid,DataList和Repeater控件具有更高的样式自定义性,所以很多时候我们喜欢使用DataList或Repeater控件来显示数据。
 

实现DataList或Repeater控件的分页显示有几种方法:
1、写一个方法或存储过程,根据传入的页数返回需要显示的数据表(DataTable)
2、使用PagedDataSource类

本篇文章主要说怎么使用PagedDataSource类实现DataList和Repeater控件的分页显示。DataGrid控件内部也使用了PagedDataSource类,PagedDataSource 类封装DataGrid控件的属性,这些属性使DataGrid可以执行分页。

PagedDataSource类的部分公共属性:
AllowCustomPaging获取或设置指示是否启用自定义分页的值。
AllowPaging获取或设置指示是否启用分页的值。
Count获取要从数据源使用的项数。
CurrentPageIndex获取或设置当前页的索引。
DataSource获取或设置数据源。
DataSourceCount获取数据源中的项数。
FirstIndexInPage获取页中的第一个索引。
IsCustomPagingEnabled获取一个值,该值指示是否启用自定义分页。
IsFirstPage获取一个值,该值指示当前页是否是首页。
IsLastPage获取一个值,该值指示当前页是否是最后一页。
IsPagingEnabled获取一个值,该值指示是否启用分页。
IsReadOnly获取一个值,该值指示数据源是否是只读的。
IsSynchronized获取一个值,该值指示是否同步对数据源的访问(线程安全)。
PageCount获取显示数据源中的所有项所需要的总页数。
PageSize获取或设置要在单页上显示的项数。
VirtualCount获取或设置在使用自定义分页时数据源中的实际项数。

这些属性是否和DataGrid的属性很相似?没错,DataGrid控件就是使用PagedDataSource类来实现数据分页显示的。下面举个使用PagedDataSource类实现DataList和Repeater控件的分页显示的例子:

publicvoidPage_Load(Objectsrc,EventArgse)
{
OleDbConnectionobjConn=newOleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; DataSource=c:\test.mdb");
OleDbDataAdapterobjCommand=newOleDbDataAdapter("select*from Users",objConn);
DataSetds=newDataSet();
objCommand.Fill(ds);

//对PagedDataSource对象的相关属性赋值
PagedDataSourceobjPds=newPagedDataSource();
objPds.DataSource=ds.Tables[0].DefaultView;
objPds.AllowPaging=true;
objPds.PageSize=5;
intCurPage;

//当前页面从Page查询参数获取
if(Request.QueryString["Page"]!=null)
CurPage=Convert.ToInt32(Request.QueryString["Page"]);
else
CurPage=1;

objPds.CurrentPageIndex=CurPage-1;
lblCurrentPage.Text="Page:"+CurPage.ToString();

if(!objPds.IsFirstPage)
lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath+"?Page="+ Convert.ToString(CurPage-1);

if(!objPds.IsLastPage)
lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+"?Page="+ Convert.ToString(CurPage+1);

//把PagedDataSource对象赋给Repeater控件
Repeater1.DataSource=objPds;
Repeater1.DataBind();
}

这样就可以很简单的实现DataList和Repeater控件的分页显示。但这样做有个缺点,就是每次都要把所有页的数据Select出来,DataGrid也是这样,这样会降低一点效率(大多时候体会不出来差别);如果使用第一种方法就可以只Select出当前页的数据(实现方法请查看有关文章)

   -------------------------------------------------------------------------------------------
  上一篇:用动态属性和DataView实现DataGrid的双向排序
  下一篇:Forms身份验证
   -------------------------------------------------------------------------------------------
用户名:
Email:
评论内容:
 
  精品推荐
推荐:ASPX一句话木马--终
利用ASP.Net 动态生成HTML
asp.net实现验证码
在asp.net中利用session做
Asp.net 中在客户端触发服
Asp.net 中服务端控件事件
ASP.NET上传图片并生成可
ASP.NET AJAX解决网页打开
实现IE浏览器部分菜单命令
Asp.net一夜速成教程
从sqlserver中读取图片
ASP.NET页面间的传值的几
用动态属性和DataView实现
用PagedDataSource类实现D
关于TreeView控件专题
asp.net上传图片并同时生
ASP.NET中水晶报表的使用
ASP.NET 中 Cookie 的基本
ADO.NET使用经验集
Forms身份验证
ASP.NET四种页面导航方式
ASP.NET中如何防范SQL注入
[分享]ASP.NET学习手记```
ASP.NET编程中的十大技巧
用ASP.NET上传图片并生成
关于我们 | 发展历程 | 在线投稿 | 核心监督 | 友情链接 | 网站地图 | 网站留言 | 联系我们
Copyright © 2004-2007 Www.Hx99.Net
版本:华西黑盟网站系统V5.0 Email:root#hx99.org
中国·西安·宝鸡 请使用IE6.0版本, 分辩率1024×768进行浏览
版权所有 任意抄袭 注意完整
陕ICP备06000444号