在自己的项目中有一个文章的管理页面需要用到分页,

这种分页方法是在黑马的一个视频中看到的,便用在了自己的项目中。

但是使用控件实在是太丑,虽然我写的也丑......。

gridview 控件提供的分页已经足够强大,微小的数据量根本不需要在意。

而本文所介绍的分页一样无法应对大量的数据,只是一种简单的实现。

通过传入的 请求页码 以及程序设定好的 每页显示的数量 ,计算出一页数据的开始数与结束数,调用 GetPageList 方法,返回泛型数据集合。

         //pageindex:页码,paesize:每页数量

         public static List<ArticleBLL> GetArticleMenu(int pageindex, int pagesize)
{
int start = (pageindex - ) * pagesize + ;
int end = pagesize * pageindex;
List<ArticleBLL> list = GetPageList(start, end);
return list;
}

GetPageList 方法,接收到上面方法的计算结果,查询数据然后返回。

         // 传入 开始id 以及 结束id 获得数据列表

         private static List<ArticleBLL> GetPageList(int start, int end)
{
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";
SqlParameter[] para = {
new SqlParameter ("@start",start),
new SqlParameter("@end",end)
};
DBHelp db = new DBHelp();
DataTable dt = db.GetDataTable(sqlstring, para);
List<ArticleBLL> list = null;
if (dt.Rows.Count > )
{
list = new List<ArticleBLL>();
ArticleBLL article = null;
foreach (DataRow row in dt.Rows)
{
article = new ArticleBLL();
LoadEnity(row, article);
list.Add(article);
}
}
return list;
}

转化数据。

         //转化数据
private static void LoadEnity(DataRow row, ArticleBLL article)
{
article.ID = Convert.ToInt32(row["ID"]);
article.Title = Convert.ToString(row["Title"]);
article.Text = Convert.ToString(row["Text"]);
article.Time = Convert.ToDateTime(row["Time"]);
}

生成页码条

我使用的前端框架是 Bootstrap v2 在这里直接将样式写在输出里了。

         //产生数字页码条
//页面产生10个数字页码
//pageindex 传来的请求页码值
//articlemenucount 总页码数量
//pagesize 每页数量值 public static string GetPageBar(int pageindex,int pagesize)
{
int articlemenucount = GetArticleMenuCount(pagesize);
if (articlemenucount == )
{ return string.Empty; }
int start = pageindex - ;
if (start < )
{ start = ; }
int end = start + pagesize - ;
if (end > articlemenucount)
{ end = articlemenucount; }
StringBuilder pagebar = new StringBuilder();
pagebar.Append("<div class=\"pagination pagination-right\"><ul>");
for (int i = start; i <= end; i++)
{
if (i == pageindex)
{ pagebar.Append("<li class=\"active\"><a>" + i +"</a></li>"); }
else
{ pagebar.Append(string.Format("<li><a href='arctilemenu.aspx?page={0}'>{0}</a></li>",i)); }
}
pagebar.Append("</ul></div>");
return pagebar.ToString();
}

这两个方法求出数据的总条数,然后计算全部的页数。供上面方法计算页码条页码。

         //求总页数

         private static int GetArticleMenuCount(int pagesize)
{
int rowcount = GetRowCount();
int pagecount = Convert.ToInt32(Math.Ceiling((double)rowcount / pagesize));
return pagecount;
}
         //求出总记录数
private static int GetRowCount()
{
string sqlstring = "select count(*) from Article";
DBHelp db = new DBHelp();
return Convert.ToInt32(db.GetInt(sqlstring));
}

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

最后,真的是好丑啊。

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

  1. asp.net 简单分页打印

    <html> <head> <title>看看</title> <meta http-equiv="Content-Type" ...

  2. ASP.net简单分页

    //控制器 //实例化实体 TestEntities1 test =new TestEntities1(); //定义页数 int pageIndex; //查看接收的页数 如果不能转 则重置为1 i ...

  3. ASP.NET MVC 简单分页代码

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  4. Asp.net MVC 简单分页 自做简单分页

    Asp.net MVC 简单分页:   public static string Pager(int page,int pageSize,int total)         {           ...

  5. 基于Bootstrap的Asp.net Mvc 分页

    基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...

  6. JavaScript简单分页,兼容IE6,~3KB

    简介 兼容IE6+及现代浏览器的简单分页,支持同一页面多个分页. 使用 Browser <link rel="stylesheet" href="css/GB-pa ...

  7. ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...

  8. C#仿google日历asp.net简单三层版本

    网上搜了很多xgcalendar的例子都是Php开发的,而且官方站上的asp.net/MVC版 在vs10 08 都报错. 所以自己重新用三层写了一下希望对大家有帮助 废话不多说了 先看看它都有些什么 ...

  9. ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页

    我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...

随机推荐

  1. Python练习-一个简单易懂的迭代器,了解一下

    今天我们学习了迭代器,其实可以理解为是一个元素容器被遍历的方式,不难理解,看看下面的小例子: # 编辑者:闫龙 #一个简单的迭代器 l = [1,2,3,4,5,6,7]#建立一个列表l ite = ...

  2. 信息安全学习笔记--CSRF

      一.CSRF简介   CSRF(Cross-site request forgery)跨站请求伪造,也被称为“one click attack”或者“session riding”,通常缩写为CS ...

  3. [转]Laplace算子和Laplacian矩阵

    1 Laplace算子的物理意义 Laplace算子的定义为梯度的散度. 在Cartesian坐标系下也可表示为: 或者,它是Hessian矩阵的迹: 以热传导方程为例,因为热流与温度的梯度成正比,那 ...

  4. 20165227 实验三《敏捷开发与XP实践》实验报告

    2017-2018-4 20165227 实验三<敏捷开发与XP实践>实验报告 实验内容 1.XP基础 2.XP核心实践 3.相关工具 实验要求 1.没有Linux基础的同学建议先学习&l ...

  5. qt 零星笔记

    1.qt中堆栈对象的销毁 名字不对,我不知道该取个什么名字,暂且这样吧 在linux c编程中谈到过进程的内存映像,一个进程在内存中的映像如下

  6. Linux SSH Backdoor分析排查

    1.SSH后门分类 SSH后门方式有以下几种 软链接 SSH Server wrapper SSH Keylogger 2.软链接 利用方法 [root@helen]# ln -sf /usr/sbi ...

  7. Ubuntu_安装Wiz笔记

    前言 安装完成了Linux,有了搜狗输入法,我们还需要笔记软件,本文主要介绍如何安装为知笔记 安装步骤 找到wiz官网:http://www.wiz.cn/ 获取Linux安装教程 安装QT 下载的Q ...

  8. 【轨迹动画css】不规则轨迹动画css教程,弹球,客服广告悬浮层都可以用

    小demo如下,可更具自己需求修改: css @keyframes animX{ 0% {left: 0px;} 100% {left: 500px;} } @keyframes animY{ 0% ...

  9. 浅谈js设计模式之策略模式

    策略模式有着广泛的应用.本节我们就以年终奖的计算为例进行介绍. 很多公司的年终奖是根据员工的工资基数和年底绩效情况来发放的.例如,绩效为 S的人年终奖有 4倍工资,绩效为 A的人年终奖有 3倍工资,而 ...

  10. 在VS中让一个JS文件智能提示另一个JS文件中的成员2--具体引用

    我们知道,在html中,利用<script language="javascript" type="text/javascript" src=" ...