分页无论是前端和后端,基本都有广泛应用!下面通过一个小小案例完成这个分页效果:
参数含义:
string urlformat: 要传给服务器端的url地址格式,方便在点超链接时进行相应的跳转
long totalsize: 总的数据条数。
long pagesize: 每页多少条数据
long currentpage: 当前的页数
后面通过具体的一个案例来用这个分页方法:
一.分页方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
/// <summary>
/// 生成页码的html
/// </summary>
/// <param name="urlformat">超链接的格式。list.ashx?pagenum={pagenum}。地址中用{pagenum}做为当前页码的占位符</param></param>
/// <param name="totalsize">总数据条数</param>
/// <param name="pagesize">每页多少条数据</param>
/// <param name="currentpage">当前页</param>
/// <returns></returns>
public static rawstring pager( string urlformat, long totalsize,
long pagesize, long currentpage)
{
stringbuilder sb = new stringbuilder();
//总页数
long totalpagecount = ( long )math.ceiling((totalsize * 1.0f) / (pagesize * 1.0f));
//当前页的前几页
long firstpage = math.max(currentpage - 5, 1);
//当前页的后几页
long lastpage = math.min(currentpage + 6, totalpagecount);
//绘制分页,首页
sb.appendline( "<div><a href='" + urlformat.replace( "{pagenum}" , "1" ) + "'>首页</a>" );
//绘制分页中间数据部分
for ( long i = firstpage; i < lastpage; i++)
{
string url = urlformat.replace( "{pagenum}" , i.tostring());
if (i == currentpage) //点击后就不显示超链接
{
sb.appendline( "<a>" + i + "</a>" );
}
else
{
sb.appendline( "<a href='" + url + "'>" + i + "</a>" );
}
}
//显示最后一页
sb.appendline( "<a href='" + urlformat.replace( "{pagenum}" , totalpagecount.tostring()) + "'>末页</a></div>" );
return new rawstring(sb.tostring());
}
|
二.案例调用:
服务器端(test.ashx):这里为了方便看到效果,展示数据直接用的固定数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public void processrequest(httpcontext context)
{
context.response.contenttype = "text/html" ;
long pn = convert.toint64(context.request[ "pn" ]);
if (pn == 0) //convert.toint64(null)返回的是0
{
pn = 1;
}
long [] num = new long [50]; //这里的数据用的是固定数据
for ( int i = 0; i < 50; i++)
{
num[i] = ((pn-1) * 50) + i;
}
outputrazor(context, "~/test.cshtml" , new { nums=num,page=pn}); //这里用的razor模板引擎
}
|
这里的razor方法见:razor模板引擎简单介绍
ui端展示(test.cshtml):
1
2
3
4
5
6
7
8
9
10
11
|
< body >
< ul >
@{
foreach (int i in model.nums)
{
< li >@i</ li >
}
}
</ ul >
@pager("test.ashx?pn={pagenum}", 1020, 50, model.page);
</ body >
|
效果图:
三.jquery分页插件:
前面写的这些主要是进行功能的实现,样式效果差了点。下面贴上通过jquery实现的分页效果
jquery的效果图,及调用方法:
完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<!doctype html>
< html lang = "zh-cn" xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta charset = "utf-8" />
< title >一个非常简单的jquery分页插件</ title >
< style >
*{ margin:0; padding:0; list-style:none;}
a{ text-decoration:none;}
a:hover{ text-decoration:none;}
.tcdpagecode{padding: 15px 20px;text-align: left;color: #ccc;}
.tcdpagecode a{display: inline-block;color: #428bca;display: inline-block;height: 25px; line-height: 25px; padding: 0 10px;border: 1px solid #ddd; margin: 0 2px;border-radius: 4px;vertical-align: middle;}
.tcdpagecode a:hover{text-decoration: none;border: 1px solid #428bca;}
.tcdpagecode span.current{display: inline-block;height: 25px;line-height: 25px;padding: 0 10px;margin: 0 2px;color: #fff;background-color: #428bca; border: 1px solid #428bca;border-radius: 4px;vertical-align: middle;}
.tcdpagecode span.disabled{ display: inline-block;height: 25px;line-height: 25px;padding: 0 10px;margin: 0 2px; color: #bfbfbf;background: #f2f2f2;border: 1px solid #bfbfbf;border-radius: 4px;vertical-align: middle;}
</ style >
</ head >
< body >
<!-- 代码部分begin -->
< div class = "tcdpagecode" >
</ div >
< pre >
调用方法:
$(".tcdpagecode").createpage({
pagecount:20,
current:1,
backfn:function(p){
//单击回调方法,p是当前页码
}
});
pagecount:总页数
current:当前页
</ pre >
</ body >
< script src = "/ajaxjs/jquery.min.js" ></ script >
< script src = "/ajaxjs/jquery.page.js" ></ script >
< script >
$(".tcdpagecode").createpage({
pagecount:20,
current:5,
backfn:function(p){
console.log(p);
}
});
</ script >
<!-- 代码部分end -->
</ html >
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/fengxuehuanlin/p/5373814.html