主要代码:
把arraylist(或数组)的数据源绑定到repeater,并进行分页 
+++demo++++ 
aspx 
__________________________________________ 
<body> 
<form id="form1" method="post" runat="server"> 
<font face="宋体"> 
<p><asp:repeater id="rtest" runat="server" datamember="1"> 
<itemtemplate> 
<f color="#ff3366"> 
<%#container.dataitem%> 
<br> 
</f 
</itemtemplate> 
</asp:repeater></p> 
<p>当前页:  
<asp:label id="dq" runat="server">1</asp:label></p> 
<p> 
<asp:label id="link" runat="server">label</asp:label></p> 
</font> 
</form> 
</body> 
____________________________________________________ 
.cs 
____________________________________________________________ 
public class t1 : system.web.ui.page 
{ 
protected system.web.ui.webcontrols.label dq; 
protected system.web.ui.webcontrols.label link; 
protected system.web.ui.webcontrols.label d; 
protected system.web.ui.webcontrols.repeater rtestt; 
protected system.web.ui.webcontrols.repeater rtest; 
private int pagesize;//每页显示的记录数目 
public void page_load(object sender, system.eventargs e) 
{ 
// 在此处放置用户代码以初始化页面 
if(!page.ispostback) 
pagesize=40; //每页显示的记录数目 
this.rtest.datasource=datasource();//直接绑定到数据源 
this.rtest.databind(); 
} 
//设置arraylist,供arraylist datasource()调用 
public arraylist data() 
{ 
//++++给repeater构造数据源,长度变量为j+++++++++++++++++++++++++++++++++++++++++++++++++++++ 
arraylist s=new arraylist(); 
for(int j=1;j<100;j++) 
s.add("aa"+j.tostring()); 
return s; 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
} 
#regi 
private arraylist datasource() 
{ 
arraylist s=data(); 
{ 
//再次构造一个arraylist,作为每个页面显示的数据 
arraylist subs=new arraylist(); 
int rek=int32.parse(request.querystring["page"]); 
dq.text=(rek+1).tostring(); 
//如果是能被整除,如总记录数为20,每页显示4条记录,所以就整除,要是每页显示3条记录,则在最后页为2条记录 
if(s.count==pagesize*(s.count/pagesize)) 
{ 
for(int link=0;link<s.count/pagesize;link++) 
{ 
response.write("页:<a href='#' /"+"a>"; 
} 
} 
//不能被整除的处理 
if(s.count!=pagesize*(s.count/pagesize)) 
{ 
for(int link=0;link<(s.count/pagesize)+1;link++) 
{ 
response.write("页:<a href='#' ) +">"+(link+1)+"</"+"a>"; 
} 
} 
//判断是否能记录是否能被页数整除 
if(s.count==pagesize*(s.count/pagesize)) 
{ 
int k=rek; 
if((k*pagesize)<s.count) 
{ 
for(int i=(pagesize*k);i<(pagesize*k+pagesize);i++) 
{ 
subs.add(s[i]); 
} 
} 
} 
//不能整除,对最后页的设置.如总记录数为20,每页显示3条记录,以下就设置就只显示最后也的那2条记录 
if(rek==s.count/pagesize) 
{ 
int k=rek; 
for(int i=(pagesize*k);i<(s.count);i++) 
{ 
subs.add(s[i]); 
} 
}
else 
{ 
int k=rek; 
{ 
for(int i=(pagesize*k);i<(pagesize*k+pagesize);i++) 
{ 
subs.add(s[i]); 
} 
} 
} 
if(s.count==pagesize*(s.count/pagesize)) 
{ 
response.write("共"+s.count/pagesize+"页"; 
} 
else 
{ 
response.write("共"+(1+s.count/pagesize)+"页"; 
} 
return subs; 
} 
} 
#endregion 
#region web 窗体设计器生成的代码 
override protected void oninit(eventargs e) 
{ 
// 
// codegen: 该调用是 asp.net web 窗体设计器所必需的。 
// 
initializecomp 
base.oninit(e); 
} 
/// <summary> 
/// 设计器支持所需的方法 – 不要使用代码编辑器修改 
/// 此方法的内容。 
/// </summary> 
private void initializecomp 
{ 
this.load += new system.eventhandler(this.page_load); 
} 
#endregion 
} 
思路: 
建立个arraylist data(),储存所有的数据. 
而arraylist datasource()则为从总的数据源中取要显示的某部分. 
也就是你看到的当前页的数据. 
实现方法: 
首先找到当前页的开始位置i,(即s[i]中的i是几)和当前页结束时的i 
并把他们添加到arraylist subs中 
其中arraylist subs只储存当前页的记录. 
主要变量声明: 
pagesize 每页显示的记录数目 
j 数据源的总记录数值(我设置的为99,因为1=j<100) 
用途: 
这样只要你把数据库中的记录查询后,把他添加到arraylist s里 
就可以直接 
pagesize=40; //每页显示的记录数目 
this.rtest.datasource=datasource();//直接绑定到数据源 
this.rtest.databind(); 
绑定,并分页.(也可以封装为一个组件使用) 
说明:对datalist和datagrid的我还没研究.此方法是我偶想到的,具体的用法我会进步"开发".暂时首也需要带参数page.
