分页无论是前端和后端,基本都有广泛应用!下面通过一个小小案例完成这个分页效果:
参数含义:
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