当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  使用PagedDataSource类实现DataList和Repeater控件的分页显示

 使用PagedDataSource类实现DataList和Repeater控件的分页显示

点击次数:25 次 发布日期:2008-11-26 12:14:56 作者:源代码网
源代码网推荐      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控件的分页显示的例子:
源代码网推荐  
源代码网推荐   public void Page_Load(Object src,EventArgs e)
源代码网推荐   {
源代码网推荐   OleDbConnection objConn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c: est.mdb");
源代码网推荐   OleDbDataAdapter objCommand=new OleDbDataAdapter("select * from Users",objConn);
源代码网推荐   DataSet ds=new DataSet();
源代码网推荐   objCommand.Fill(ds);
源代码网推荐  
源代码网推荐   //对PagedDataSource 对象的相关属性赋值
源代码网推荐   PagedDataSource objPds = new PagedDataSource();
源代码网推荐   objPds.DataSource = ds.Tables[0].DefaultView;
源代码网推荐   objPds.AllowPaging = true;
源代码网推荐   objPds.PageSize = 5;
源代码网推荐   int CurPage;
源代码网推荐  
源代码网推荐   //当前页面从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出当前页的数据(实现方法请查看有关文章)
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华