在repeater、datalist控件中使用分页功能

repeater和datalist控件可以很快的、灵活地在.aspx页面上显示数据,但
它们都没有分页功能;虽然datagrid控件有分页功能,但使用起来却太古板了、灵活性太差了。
很多文章都在讨论repeater、datalist的分页功能的问题,下面我们就用
pagedatasource这个类在repeater中进行分页:
pagedatasource是datagrid中封装的一个类,datagrid就是用这个来实现分页功能的;
我们也可以用这个类在datalist、repeater中进行分页,大家只要看了下面的程序示例
问题就可以解决了。

< %@Import namespace="System.Data"%>
< %@Import namespace="System.Data.SqlClient"%>

 1<html>
 2<head>
 3<title>default</title>
 4<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
 5<script language="C#" runat="server">   
 6public void Page_Load(Object src,EventArgs e)   
 7{SqlConnection cnn=new SqlConnection("server=zzl;uid=sa;pwd=970480;database=zzl");//连接数据库   
 8SqlDataAdapter mycommand=new SqlDataAdapter("select * from start1",cnn);//数据操作,而表start1及其数据自己sqlserver中做   
 9DataSet ds=new DataSet();   
10mycommand.Fill(ds); //实例dataset对象为ds,并把数据填充到ds上 
11
12  
13PagedDataSource pp=new PagedDataSource();//对分页功能的类实例对象   
14pp.DataSource=ds.Tables[0].DefaultView;//把数据赋予对象pp   
15pp.AllowPaging=true;//允许进行分页   
16pp.PageSize=6;//设置每页数据的个数   
17int cpage;//这个整数用来分析分页页数的   
18if(Request.QueryString["page"]!=null)//这个判断语句的作用是对cpage进行赋值   
19cpage=Convert.ToInt32(Request.QueryString["page"]);   
20else   
21cpage=1;   
22pp.CurrentPageIndex=cpage-1;//pp对象的当前引索值,因为引索值是从0开始,cpage从1开始所以要减1   
23if (!pp.IsFirstPage)//Request.CurrentExecutionFilePath为当前的程序的文件名,直接写也可以   
24pre.NavigateUrl=Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(cpage-1); 
25
26if (!pp.IsLastPage)   
27next.NavigateUrl=Request.CurrentExecutionFilePath+ "?page=" + Convert.ToString(cpage+1);   
28  
29repeater1.DataSource=pp;   
30repeater1.DataBind();}   
31</script>
32</head>
33<body>
34<table border="0" width="100%">
35<tr><td>  <asp:label id="current" runat="server"></asp:label></td></tr>
36<tr><td> <asp:hyperlink id="pre" runat="server">&lt;&lt;</asp:hyperlink>
37<asp:hyperlink id="next" runat="server">&gt;&gt;</asp:hyperlink></td></tr></table>
38<asp:repeater id="repeater1" runat="server">
39<itemtemplate>
40<table border="0" width="100%">
41<tr><td>  ```
42#DataBinder.Eval(Container.DataItem,"product")
43```</td></tr>
44<tr><td>  </td></tr></table></itemtemplate></asp:repeater>
45</body>
46</html>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus