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                 else
26                 { pagebar.Append(string.Format("<li><a href=‘arctilemenu.aspx?page={0}‘>{0}</a></li>",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         }

在调用时只需要传入每页的数据条数以及当前请求的页码就可以了。

最后,真的是好丑啊。

时间: 2024-08-26 07:52:08

ASP.net 简单分页的实现的相关文章

在 asp.net mvc中的简单分页算法

//第一步:建立如下分页实体类:namespace MVCPager.Helpers { /// <summary> /// 简单分页算法类 /// </summary> public class Pager { public int RecordCount { get; set; } public int PageIndex { get; set; } public int PageSize { get; set; } public int PageCount { get { r

ASP.NET Repeater控件实现简单分页

早上,有看MSDN,看到了 PagedDataSource 类 http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.pageddatasource(v=vs.110).aspx 想起以前Insus.NET只对Gridview和DataList控件进行自定义分页.<GridView和DataList分页组件与用户控件>http://www.cnblogs.com/insus/archive/2009/03/19/14

asp.net mvc简单分页实例

@{ ViewBag.Title = "Index"; } @{ int pageIndex = (int)ViewBag.CurrentPage; int pageCount = (int)ViewBag.Pages; } <h2>Index</h2> <table> <tr> <th>cateId</th> <th>cateName</th> <th>cateNote<

不用组件的简单分页

set conn=server.CreateObject("adodb.connection") set rs=server.CreateObject("adodb.recordset") cnpath="data source=" & server.MapPath("question.mdb") conn.open "provider=microsoft.jet.oledb.4.0;" &

ASP.NET MVC 分页MvcPager

ASP.NET MVC 分页MvcPager 开源框架  admin  8个月前 (08-20)  1484浏览 他连续12年获得微软MPV称号,几年前,他写的ASP.NET分页控件,被很多.NET开发人员使用,现在他又写了名为MvcPager的分页扩展,并免费开源,支持MVC通用分页,与EF完美结合,支持AJAX分页,简单灵活,提供多个演示案例,是迄今为止最好的MVC分页方式,推荐各位ASP.NET MVC开发者使用. 分页是每个项目必须面对的技术点,不好的分页不但体验不好,而且会影响系统的整

Asp.Net MVC 分页、检索、排序整体实现

原文:Asp.Net MVC 分页.检索.排序整体实现 很多时候需要这样的功能,对表格进行分页.排序和检索.这个有很多实现的方式,有现成的表格控件.用前端的mvvm,用户控件.但很多时候看着很漂亮的东西你想进一步控制的时候却不那么如意.这里自己实现一次,功能不是高大全,但求一个清楚明白,也欢迎园友拍砖.前端是bootstrap3+jPaginate,后台基于membership.没什么难点. 先上效果图. 分页其实就是处理好 每页项目数.总项目数.总页数.当前页.为了方便复用,就先从仓库开始说起

asp.net_01 简单介绍

1.静态网页和动态网页 刚开始一直概念很模糊,分不清,今天晚上看视频,查资料终于弄明白点儿了.静态网页和动态网页的区别可以说是使用语言的区别. 静态网页:使用语言—html,不包含服务器运行代码;没有数据库,数据量大时,制作和维护困难:访问速度快:内容稳定,容易被搜索引擎检索:不含程序,不可交互,适合更新较少的展示型网站. 动态网页:使用语言--以超文本标记语言(html)为主,结合其他服务器端语言:有数据库,方便维护:访问速度慢:不容易被搜索引擎检索:交互性强.动态网页首先获得用户的指令,然后

用ASP实现简单的繁简转换

国际化似乎是一个非常流行的口号了,一个网站没有英文版至少也要弄个繁体版,毕竟都是汉字,翻译起来不会那么麻烦:P 一般的繁简转换是使用字典,通过GB的内码算出BIG5字符在字典中的位置,读取显示之,用fso应该可以实现.这里介绍的方法思路更简单一些,用Dictionary对象,就是字典,呵呵,dicGb2Big5(gb)就是对应的BIG5.比起计算内码再按照位置读取字符简单的多吧:) 为了减少开销,把字典放在Application中,即在global.asa中建立两个application的字典对

ASP.NET——真假分页

所谓分页,就是把所有要显示的内容分成n多页来显示.那为什么要用分页而不直接全部显示呢?这就好比一本书,我们可以用一张纸写完全部书的内容,但实际上并不是这么做的.我们把网页分成一页一页的,其实很大程度上是在为用户考虑,极大的方便用户. 分页有两种,一种是真分页,一种是假分页. 假分页的"假"在于我已经把所有的数据取出来了,只是在显示的时候给予一定的控制来到达分页的效果. 真分页的"真"在于所有的数据并非一次取出,而是真真正正的用户查看哪一页才去数据库中取出所需的内容.