您现在的位置是:网站首页> 编程资料编程资料
简单好用的ASP.NET分页类(支持AJAX、自定义文字)_实用技巧_
2023-05-24
293人已围观
简介 简单好用的ASP.NET分页类(支持AJAX、自定义文字)_实用技巧_
在做网站没用 JS UI控件时 很实用
用法:
var ps=new PageString(); /*可选参数*/ ps.SetIsEnglish = true;// 是否是英文 (默认:false) ps.SetIsShowText = true;//是否显示分页文字 (默认:true) //ps.TextFormat="" (默认值:《span class=\"pagetext\"》《strong》总共《/strong》:{0} 条 《strong》当前《/strong》:{1}/{2}《/span》) //ps.SetPageIndexName Request["pageIndex"](默认值:"pageIndex") ps.SetIsAjax = false;// (默认值:"false") /*函数参数*/ int total = 10000; int pageSize = 10; int pageIndex = Convert.ToInt32(Request["pageIndex"]); var page = ps.ToString(total, pageSize, pageIndex, "/UI/PageStringTest.aspx?"); //获取 page html 输出 Response.Write(page); 效果:
代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace SyntacticSugar { /// /// ** 描述:分页类 /// ** 创始时间:2015-5-29 /// ** 修改时间:- /// ** 作者:sunkaixuan public class PageString { /// /// 是否是英文 (默认:false) /// public bool SetIsEnglish { get; set; } /// /// 是否显示分页文字(默认:true) /// public bool SetIsShowText { get; set; } /// /// 样式 (默认:"pagination") /// public string SetClassName { get; set; } /// /// 分页参数名 (默认:"pageIndex") /// public string SetPageIndexName { get; set; } /// /// 是否是异步 同步 href='' 异步 onclick=ajaxPage() (默认:false) /// public bool SetIsAjax { get; set; } /// /// 自定义文字 /// string.Format("{0}{1}{2}","总记录数","当前页数","总页数") /// 默认值:《span class=\"pagetext\"》《strong》总共《/strong》:{0} 条 《strong》当前《/strong》:{1}/{2}《/span》 /// public string SetTextFormat { get; set; } public PageString() { SetIsEnglish = false; SetIsShowText = true; SetTextFormat = "总共:{0} 条 当前:{1}/{2} "; SetClassName = "pagination"; SetPageIndexName = "pageIndex"; SetIsAjax = false; } /*免费的样式 .pagination .click {cursor:pointer} .pagination a{text-decoration: none;border: 1px solid #AAE;color: #15B;font-size: 13px;border-radius: 2px;} .pagination span{ color:#666;font-size:13px;display: inline-block;border: 1px solid #ccc;padding: 0.2em 0.6em;} .pagination span.pagetext{ border:none} .pagination a:hover{background: #26B;color: #fff;} .pagination a{display: inline-block;padding: 0.2em 0.6em;} .pagination .page_current{background: #26B;color: #fff;border: 1px solid #AAE;margin-right: 5px;} .pagination{margin-top: 20px;} .pagination .current.prev, .pagination .current.next{color: #999;border-color: #999;background: #fff;} * */ /// /// 分页算法<一>共20页 首页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 末页 /// /// 总记录数 /// 每页记录数 /// 当前页数 /// Url参数 /// public string ToString(int total, int pageSize, int pageIndex, string query_string) { int allpage = 0; int next = 0; int pre = 0; int startcount = 0; int endcount = 0; StringBuilder pagestr = new StringBuilder(); pageIndex = pageIndex == 0 ? 1 : pageIndex; pagestr.AppendFormat("", SetClassName); if (pageIndex < 1) { pageIndex = 1; } //计算总页数 if (pageSize != 0) { allpage = (total / pageSize); allpage = ((total % pageSize) != 0 ? allpage + 1 : allpage); allpage = (allpage == 0 ? 1 : allpage); } next = pageIndex + 1; pre = pageIndex - 1; startcount = (pageIndex + 5) > allpage ? allpage - 9 : pageIndex - 4;//中间页起始序号 //中间页终止序号 endcount = pageIndex < 5 ? 10 : pageIndex + 5; if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始 if (allpage < endcount) { endcount = allpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内 bool isFirst = pageIndex == 1; bool isLast = pageIndex == allpage; if (SetIsShowText) pagestr.AppendFormat(SetTextFormat, total, pageIndex, allpage); if (isFirst) { pagestr.Append("首页上一页"); } else { pagestr.AppendFormat("首页上一页", query_string, pre); } //中间页处理,这个增加时间复杂度,减小空间复杂度 for (int i = startcount; i <= endcount; i++) { bool isCurent = pageIndex == i; if (isCurent) { pagestr.Append(" " + i + ""); } else { pagestr.Append(" " + i + ""); } } if (isLast) { pagestr.Append("下一页末页"); } else { pagestr.Append(" 下一页末页"); } pagestr.AppendFormat(""); return ConversionData(pagestr.ToString()); } private string ConversionData(string page) { if (SetIsEnglish) { page= page.Replace("上一页", "Previous").Replace("下一页", "Next").Replace("总共", "total").Replace("当前", "Current").Replace("条", "records").Replace("首页", "First").Replace("末页", "Last"); } if (SetIsAjax) { var matches = Regex.Matches(page, @"href\="".*?""",RegexOptions.Singleline); if (matches != null && matches.Count > 0) { foreach (Match m in matches) { page = page.Replace(m.Value, string.Format("class=\"click\" onclick=\"ajaxPage('{0}')\"", Regex.Match(m.Value, string.Format(@"{0}\=(\d+)", SetPageIndexName)).Groups[1].Value)); } } } return page; } } } 您可能感兴趣的文章:
- 分享一个asp.net pager分页控件
- Asp.Net数据控件引用AspNetPager.dll分页实现代码
- 一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载
- asp.net中使用自定义控件的方式实现一个分页控件的代码
- asp.net jquery无刷新分页插件(jquery.pagination.js)
- asp.net自定义分页控件示例
- asp.net利用后台实现直接生成html分页的方法
- ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)
- asp.net中如何调用sql存储过程实现分页
- ASP.NET MVC4 HtmlHelper扩展类,实现分页功能
相关内容
- ASP.NET简单好用功能齐全图片上传工具类(水印、缩略图、裁剪等)_实用技巧_
- ASP.NET实现的简单易用文件上传类_实用技巧_
- javascript操作ASP.NET服务器控件_实用技巧_
- C#将DataTable转化为List<T>_实用技巧_
- 使用SWFUpload实现无刷新上传图片_实用技巧_
- ASP.NET中实现把form表单元素转为实体对象或集合_实用技巧_
- ASP.NET中实现根据匿名类、datatable、sql生成实体类_实用技巧_
- ASP.NET中实现Form表单字段值自动填充到操作模型中_实用技巧_
- ASP.NET检测到不安全 Request.Form 值解决方案汇总_实用技巧_
- asp.net开发微信公众平台之验证消息的真实性_实用技巧_
