C#实现分页组件的方法
程序员文章站
2024-02-11 17:30:22
分页无论是前端和后端,基本都有广泛应用!下面通过一个小小案例完成这个分页效果:
参数含义:
string urlformat: 要传给服务器端的url地址格式,方便在点...
分页无论是前端和后端,基本都有广泛应用!下面通过一个小小案例完成这个分页效果:
参数含义:
string urlformat: 要传给服务器端的url地址格式,方便在点超链接时进行相应的跳转
long totalsize: 总的数据条数。
long pagesize: 每页多少条数据
long currentpage: 当前的页数
后面通过具体的一个案例来用这个分页方法:
一.分页方法:
/// <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):这里为了方便看到效果,展示数据直接用的固定数据
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):
<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的效果图,及调用方法:
完整代码:
<!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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。