首页 > 代码库 > ASP.net 简单分页的实现
ASP.net 简单分页的实现
在自己的项目中有一个文章的管理页面需要用到分页,
这种分页方法是在黑马的一个视频中看到的,便用在了自己的项目中。
但是使用控件实在是太丑,虽然我写的也丑......。
gridview 控件提供的分页已经足够强大,微小的数据量根本不需要在意。
而本文所介绍的分页一样无法应对大量的数据,只是一种简单的实现。
通过传入的 请求页码 以及程序设定好的 每页显示的数量 ,计算出一页数据的开始数与结束数,调用 GetPageList 方法,返回泛型数据集合。
1 //pageindex:页码,paesize:每页数量 2 3 4 public static List<ArticleBLL> GetArticleMenu(int pageindex, int pagesize) 5 { 6 int start = (pageindex - 1) * pagesize + 1; 7 int end = pagesize * pageindex; 8 List<ArticleBLL> list = GetPageList(start, end); 9 return list;10 }
GetPageList 方法,接收到上面方法的计算结果,查询数据然后返回。
1 // 传入 开始id 以及 结束id 获得数据列表 2 3 4 private static List<ArticleBLL> GetPageList(int start, int end) 5 { 6 string sqlstring = "select * from (select row_number() over(order by Time desc) as num,* from Article)as t where t.num >= @start and t.num <= @end"; 7 SqlParameter[] para = { 8 new SqlParameter ("@start",start), 9 new SqlParameter("@end",end)10 };11 DBHelp db = new DBHelp();12 DataTable dt = db.GetDataTable(sqlstring, para);13 List<ArticleBLL> list = null;14 if (dt.Rows.Count > 0)15 {16 list = new List<ArticleBLL>();17 ArticleBLL article = null;18 foreach (DataRow row in dt.Rows)19 {20 article = new ArticleBLL();21 LoadEnity(row, article);22 list.Add(article);23 }24 }25 return list;26 }
转化数据。
1 //转化数据2 private static void LoadEnity(DataRow row, ArticleBLL article)3 {4 article.ID = Convert.ToInt32(row["ID"]);5 article.Title = Convert.ToString(row["Title"]);6 article.Text = Convert.ToString(row["Text"]);7 article.Time = Convert.ToDateTime(row["Time"]);8 }
生成页码条
我使用的前端框架是 Bootstrap v2 在这里直接将样式写在输出里了。
1 //产生数字页码条 2 //页面产生10个数字页码 3 //pageindex 传来的请求页码值 4 //articlemenucount 总页码数量 5 //pagesize 每页数量值 6 7 8 public static string GetPageBar(int pageindex,int pagesize) 9 {10 int articlemenucount = GetArticleMenuCount(pagesize);11 if (articlemenucount == 1)12 { return string.Empty; }13 int start = pageindex - 5;14 if (start < 1)15 { start = 1; }16 int end = start + pagesize - 1;17 if (end > articlemenucount)18 { end = articlemenucount; }19 StringBuilder pagebar = new StringBuilder();20 pagebar.Append("<div class=\"pagination pagination-right\"><ul>");21 for (int i = start; i <= end; i++)22 {23 if (i == pageindex)24 { pagebar.Append("<li class=\"active\"><a>" + i +"</a></li>"); }25 else26 { pagebar.Append(string.Format("<li><a href=http://www.mamicode.com/‘arctilemenu.aspx?page={0}‘>{0}",i)); }27 }28 pagebar.Append("</ul></div>");29 return pagebar.ToString();30 }
这两个方法求出数据的总条数,然后计算全部的页数。供上面方法计算页码条页码。
1 //求总页数2 3 4 private static int GetArticleMenuCount(int pagesize)5 {6 int rowcount = GetRowCount();7 int pagecount = Convert.ToInt32(Math.Ceiling((double)rowcount / pagesize));8 return pagecount;9 }
1 //求出总记录数2 private static int GetRowCount()3 {4 string sqlstring = "select count(*) from Article";5 DBHelp db = new DBHelp();6 return Convert.ToInt32(db.GetInt(sqlstring));7 }
在调用时只需要传入每页的数据条数以及当前请求的页码就可以了。
最后,真的是好丑啊。
ASP.net 简单分页的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。