欢迎光临
我们一直在努力

非数据库数据源分页的实现-ASP教程,数据库相关

建站超值云服务器,限时71元/月

 

暂时测试地址:
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>当前页:&nbsp;
<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
}

思路:
建立个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.
需要工程文件的给我要吧.

演示效果:
页:1页:2页:3共3页

aa81
aa82
aa83
aa84
aa85
aa86
aa87
aa88
aa89
aa90
aa91
aa92
aa93
aa94
aa95
aa96
aa97
aa98
aa99

当前页: 3

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 非数据库数据源分页的实现-ASP教程,数据库相关
分享到: 更多 (0)