日期:2012-08-27  浏览次数:20964 次

 

暂时测试地址:
202.127.144.107/overred/nodatapage.htm
下载地址:
chinaeduonline.net/rar/nodatapage.rar
里面有详细的说明

主要代码:

把ArrayList(或数组)的数据源绑定到repeater,并进行分页
+++demo++++
aspx
__________________________________________
<body>
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<P><asp:repeater id="rtest" runat="server" DataMember="1">
<ItemTemplate>
<font color="#ff3366">
<%#Container.DataItem%>
<br>
</font>
</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;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
#region  对数据的具体分页
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=t1.aspx?page="+(link)+">"+(link+1)+"</"+"a>";

}
}
//不能被整除的处理
if(s.Count!=pagesize*(s.Count/pagesize))
{
for(int link=0;link<(s.Count/pagesize)+1;link++)
{
Response.Write("页:<a href=t1.aspx?page="+(link) +">"+(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 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}

思路:
建立个Array