您现在的位置是:首页
>
html表格简单怎么分页 简单实用的分页类
简单实用的分页类 一 写一个分页类 u i g Sy tem u i g Sy tem Text u i g Sy tem Diag o tic ame ace Zhuwe fe g { u lic
简单实用的分页类
一 写一个分页类 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 提供的分页不说了 lishixinzhi/Article/program/net/201311/13748
很赞哦! (1077)
- 上一篇
分期买车要到车管所做抵押吗 贷款买车,如何自己一个人去车管所办理抵押登记,需要什么资料?登记后要给4s店什么东西吗?
贷款买车,如何自己一个人去车管所办理抵押登记,需要什么资料?登记后要给4 店什么东西吗? 贷款买车,如何自己一个人去车管所办理抵押登记,需要什么资料?登记后要给4 店什么东西吗?貌似,把自己的资料 交
- 下一篇
fire and ice诗歌鉴赏 诗歌:Take me to a dream 带我进入梦乡!
诗歌:Take me to a dream 带我进入梦乡 Take me to a dreamTake me to a dream Take me to a dream That I ever dre