知识大全 简单实用的分页类
Posted 知
篇首语:高斋晓开卷,独共圣人语。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 简单实用的分页类相关的知识,希望对你有一定的参考价值。
一 写一个分页类 using System; using System Text; using System Diagnostics; namespace Zhuwenfeng public class MyPager /// <summary> /// 总数据条数 /// </summary> public int TotalCount get; set; /// <summary> /// 每页数据条数 /// </summary> public int PageSize get; set; /// <summary> /// 当前页码(从 开始) /// </summary> public int CurrentPageIndex get; set; /// <summary> /// 显示出来最多的页码数量 因为假设有 页 不可能把 页都显示到界面上 /// </summary> public int MaxPagerCount get; set; /// <summary> /// 页码链接的地址格式 页码用n占位 /// </summary> public string UrlFormat get; set; public MyPager() PageSize = ; MaxPagerCount = ; /// <summary> /// 尝试从字符串pn中解析当前页面赋值给CurrentPageIndex /// </summary> /// <param name= pn ></param> public void TryParseCurrentPageIndex(string pn) int temp; if (int TryParse(pn out temp)) CurrentPageIndex = temp; else CurrentPageIndex = ; /// <summary> /// 创建页码链接 /// </summary> /// <param name= i >页码</param> /// <param name= text >链接文本</param> /// <returns></returns> private string GetPageLink(int i string text) StringBuilder sb = new StringBuilder() string url = UrlFormat Replace( n i ToString()) sb Append( <a ) Append(url) Append( > ) Append(text) Append( </a> ) return sb ToString() /// <summary> /// 检查输入参数 /// </summary> private void Check() Debug Assert(PageSize> ) Debug Assert(CurrentPageIndex >= ) Debug Assert(!string IsNullOrEmpty(UrlFormat)) /// <summary> ///渲染到前台到得HTML代码 /// </summary> /// <returns></returns> public string Render() Check() StringBuilder sb = new StringBuilder() double tempCount = TotalCount / PageSize; int pageCount = (int)Math Ceiling(tempCount) //计算显示的页码数(当总页码大于MaxPagerCount)的起始页码 int visibleStart = CurrentPageIndex MaxPagerCount/ ; if (visibleStart < ) visibleStart = ; //计算显示的页码数(当总页码大于MaxPagerCount)的起始页码 int visibleEnd = visibleStart + MaxPagerCount; //显示最多MaxPagerCount条 //如果算出来的结束页码大于总页码的话则调整为最大页码 if (visibleEnd >pageCount) visibleEnd = pageCount; if (CurrentPageIndex > ) sb Append(GetPageLink( 首页 )) sb Append(GetPageLink(CurrentPageIndex 上一页 )) else sb Append( <span>首页</span> ) //如果没有上一页了 则只显示一个上一页的文字 没有超链接 sb Append( <span>上一页</span> ) //绘制可视的页码链接 for (int i = visibleStart; i <= visibleEnd; i++) //当前页不是超链接 if (i == CurrentPageIndex) sb Append( <span> ) Append(i) Append( </span> ) else sb Append(GetPageLink(i i ToString())) if (CurrentPageIndex < pageCount) sb Append(GetPageLink(CurrentPageIndex + 下一页 )) sb Append(GetPageLink(pageCount + 末页 )) else sb Append( <span>下一页</span> ) sb Append( <span>末页</span> ) return sb ToString() 二 UI层代码示例 public partial class 分页测试 : System Web UI Page protected string PagerHTML get; private set; protected void Page_Load(object sender EventArgs e) var pager = new MyPager() pager UrlFormat = 分页测试 aspx?pagenum=n ; pager PageSize = ; pager TryParseCurrentPageIndex(Request[ pagenum ]) int startRowIndex = (pager CurrentPageIndex ) * pager PageSize; so_KeywordLogBLL bll = new so_KeywordLogBLL() pager TotalCount = bll GetTotalCount() Repeater DataSource = bll GetPagedData(startRowIndex startRowIndex + pager PageSize ) Repeater DataBind() PagerHTML = pager Render() //渲染页码条HTML 三 前台代码 <form id= form runat= server > <div> <asp:Repeater ID= Repeater runat= server > <ItemTemplate> <li> <%#Eval( Id ) %>|<%#Eval( KeyWord ) %> </li> </ItemTemplate> </asp:Repeater> <div class= pager > <%=PagerHTML%> </div> </div> </form> 四 加一个CSS更好看 <style type= text/css > pager text align: center; padding bottom: px; padding left: px; padding right: px; float: right; padding top: px; pager a border bottom: #ccc px solid; text align: left; border left: #ccc px solid; padding bottom: px; line height: px; margin: px px; outline style: none; padding left: px; padding right: px; background: #fff; color: # ; font size: px; border top: #ccc px solid; border right: #ccc px solid; text decoration: none; padding top: px; pager a:hover border bottom: #f px solid; border left: #f px solid; color: #f ; border top: #f px solid; border right: #f px solid; text decoration: underline; pager a:focus moz outline style: none; pager span border bottom style: none; text align: left; padding bottom: px; line height: px; border right style: none; margin: px px; padding left: px; padding right: px; border top style: none; background: #f ; color: #fff; font size: px; border left style: none; padding top: px; </style> 五 再加一个数据访问层的Select代码 public int GetTotalCount() string sql = SELECT count(*) FROM so_KeywordLog ; return (int)DbHelperSQL GetSingle(sql) public DataSet GetPagedData(int minrownum int maxrownum) string sql = SELECT * from(SELECT * (row_number() over(order by Id)) rownum FROM so_KeywordLog) t where rownum>=@minrownum and rownum<=@maxrownum ; SqlParameter[] parameters = new SqlParameter( @minrownum SqlDbType Int ) new SqlParameter( @maxrownum SqlDbType Int ) ; parameters[ ] Value = minrownum; parameters[ ] Value = maxrownum; return DbHelperSQL Query(sql parameters) 六 相关分页Select语句(扩展) 存储过程 create PROCEDURE GetPageDataOutRowPageCount ( @PageIndex int = 当前页数 @PageSize int = 每页大小 @RowCount int output 总行数(传出参数) @PageCount int output 总页数(传出参数) ) AS begin DECLARE @sql NVARCHAR( ) @sqlCount NVARCHAR( ) select @RowCount =COUNT(SID) @PageCount=CEILING((COUNT(SID)+ )/@PageSize) FROM Students SET @sql= SELECT TOP +str(@PageSize) + FROM Students where SID not in(select top +str((@PageIndex )*@PageSize) + SID from Students) EXEC(@sql) end Select语句 select top + pageSize + * from Students where SID not in (select top + (pageIndex ) * int Parse(pageSize) + SID from Students) Select语句 select * from (select * Row_Number()over(order by id) RowNumber from books) t where t RowNumber>= and t RowNumber<= 第n页 (PageIndex )*pageSize+ PageIndex*pageSize ListView 提供的分页不说了 cha138/Article/program/net/201311/13748相关参考
一个通用的JSP分页类,具有显示多组页码功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近
在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv
用AspNetPager控件最详细的分页实现方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 实现DataList和Repeater控件的分页显示
实现DataList和Repeater控件的分页显示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
实例讲解Oracle数据库的分页显示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixin
ASP.NET实现新闻页面的分页功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
ASP程序实现可以保存参数值的分页功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <%
CREATEproceduremain_table_pwqzc (@pagesizeint @pageindexint @docountbit @this_id) as if(@doc
Ajax搜索结果页面下方的分页按钮的生成 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishix
分享一个asp分页函数感觉挺好看的视图如图 可以根据自己的情况修改代码cha138/Article/program/net/201311/14450