知识大全 简单实用的分页类

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分页类,具有显示多组页码功能

一个通用的JSP分页类,具有显示多组页码功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近

知识大全 一个简单的oracle分页存储过程的实现和调用

  在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv

知识大全 用AspNetPager控件最详细的分页实现方法

用AspNetPager控件最详细的分页实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 实现DataList和Repeater控件的分页显示

实现DataList和Repeater控件的分页显示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 实例讲解Oracle数据库的分页显示

实例讲解Oracle数据库的分页显示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixin

知识大全 ASP.NET实现新闻页面的分页功能

ASP.NET实现新闻页面的分页功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 ASP程序实现可以保存参数值的分页功能

ASP程序实现可以保存参数值的分页功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <%

知识大全 精彩的近乎完美的分页存储过程

  CREATEproceduremain_table_pwqzc  (@pagesizeint  @pageindexint  @docountbit  @this_id)  as  if(@doc

知识大全 Ajax搜索结果页面下方的分页按钮的生成

Ajax搜索结果页面下方的分页按钮的生成  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishix

知识大全 一个实用asp分页函数

  分享一个asp分页函数感觉挺好看的视图如图      可以根据自己的情况修改代码cha138/Article/program/net/201311/14450