1.数据层的编写

NewListInfoDal.cs:

GetPageEntityList方法,根据start,end取出数据 --row_number() over()函数查询

LoadEntity方法:初始化,将datatable中的每行添加到对象中

GetRecordCount方法:获取T_news表中,总的条数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Itcast.CMS.Model; namespace Itcast.CMS.DAL
{
public class NewListInfoDal
{ /// <summary>
/// 用于分页,根据start,end 取出数据
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
public List<T_News> GetPageEntityList(int start,int end)
{
string sql = " select * from (select row_number() over(order by id) as num, * from T_News) as t where t.num>=@start and t.num<=@end ";
SqlParameter[] pars ={
new SqlParameter("@start",SqlDbType.Int),
new SqlParameter("@end",SqlDbType.Int)
};
pars[].Value = start;
pars[].Value = end; DataTable dt = DAL.SqlHelper.SelectSqlReturnDataTable(sql, CommandType.Text, pars); List<T_News> newlist_list = null;
if(dt.Rows.Count>)
{
newlist_list = new List<T_News>();
//遍历每一行添加到集合中
T_News newlist =null;
foreach(DataRow row in dt.Rows)
{
newlist = new T_News();
LoadEntity(row, newlist);
newlist_list.Add(newlist);
}
}
return newlist_list;
} public void LoadEntity(DataRow row,T_News newlist)
{
newlist.Id = Convert.ToInt32(row["id"].ToString());
newlist.Title = row["Title"] != DBNull.Value ? row["Title"].ToString() : string.Empty;
newlist.Msg = row["Msg"] != DBNull.Value ? row["Msg"].ToString() : string.Empty;
newlist.Author = row["Author"] != DBNull.Value ? row["Author"].ToString() : string.Empty;
newlist.ImagePath = row["ImagePath"] != DBNull.Value ? row["ImagePath"].ToString() : string.Empty;
newlist.SubDateTime = Convert.ToDateTime(row["SubDateTime"].ToString());
} /// <summary>
/// 获取T_News表中,总的条数
/// </summary>
/// <returns></returns>
public int GetRecordCount()
{
string sql = " select count(*) from T_News ";
object ob = DAL.SqlHelper.selectSqlReturnObject(sql, CommandType.Text);
ob = ob != DBNull.Value ? ob : string.Empty;
return Convert.ToInt32(ob.ToString());
} }
}

2.业务层的编写

NewListInfoService.cs

GetPageEntityList方法:返回分页每页的数据 --公式计算出当前页和每页的条数

GetPageCount方法:获取总的页数 --总的条数/每页的条数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Itcast.CMS.Model;
using Itcast.CMS.DAL; namespace Itcast.CMS.BLL
{
public class NewListInfoService
{ DAL.NewListInfoDal NewListInfo = new DAL.NewListInfoDal(); /// <summary>
/// 返回每页的数据
/// </summary>
/// <param name="PageIndex">当前页</param>
/// <param name="PageSize">每页的条数</param>
/// <returns></returns>
public List<T_News> GetPageEntityList(int PageIndex,int PageSize)
{
//公式计算每页的第一条,最好一条
int start = (PageIndex - ) * PageSize + ;
int end = PageIndex * PageSize;
return NewListInfo.GetPageEntityList(start, end);
} /// <summary>
/// 获取总的页数
/// </summary>
/// <returns></returns>
public int GetPageCount(int PageSize)
{
int recordCount = NewListInfo.GetRecordCount();
int PageCount = Convert.ToInt32(Math.Ceiling((double)recordCount / PageSize));
return PageCount;
} }
}

3.控制器中的Index方法

{

获取当前页码值,
设置条数,
总的页码数,
PageIndex范围判断,
获取分页数据,
ViewData数据绑定

}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Itcast.CMS.Model; namespace Itcast.CMS.WebApp.Controllers
{
public class NewListController : Controller
{
//
// GET: /NewList/
BLL.NewListInfoService NewListInfo = new BLL.NewListInfoService(); public ActionResult Index()
{
//获取当前页码值
int PageIndex = Request["PageIndex"] != null ? Convert.ToInt32(Request["PageIndex"]) : ;
//设置条数
int PageSize = ;
//总的页码数
int PageCount = NewListInfo.GetPageCount(PageSize);
//PageIndex范围判断
PageIndex = PageIndex < ? : PageIndex;
PageIndex = PageIndex > PageCount ? PageCount : PageIndex;
//获取分页数据
List<T_News> list = NewListInfo.GetPageEntityList(PageIndex, PageSize);
//ViewData...
ViewData["newInfoList"] = list;
ViewData["pageIndex"] = PageIndex;
ViewData["pageCount"] = PageCount;
return View();
} }
}

4.生产分页的页码,Common中的PageBar类中的GetPageBar方法 --生产分页的字符

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Itcast.CMS.Common
{
public class PageBar
{
public static string GetPageBar(int pageIndex,int pageCount)
{
if (pageCount == )
{
return string.Empty;
}
int start = pageIndex - ;
start = start < ? : start;
int end = start + ;
if (end > pageCount)
{
end = pageCount;
start = end - > ? end - : ;
}
StringBuilder sb = new StringBuilder();
if (pageIndex > )
{
sb.Append(string.Format("<a href='?PageIndex={0}'>上一页</a>", pageIndex - ));
}
for (int i = start; i <= end; i++)
{
if (i == pageIndex)
{
sb.Append(i);
}
else
{
sb.Append(string.Format("<a href='?PageIndex={0}'>{0}</a>", i));
}
}
if (pageIndex < pageCount)
{
sb.Append(string.Format("<a href='?PageIndex={0}'>下一页</a>", pageIndex + ));
}
return sb.ToString();
}
}
}

5.视图中的调用,Razor引擎视图的编写

@{
Layout = null;
}
@using Itcast.CMS.Model
@using Itcast.CMS.Common <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="~/Content/tableStyle.css" rel="stylesheet" />
<link href="~/Content/pageBar.css" rel="stylesheet" />
</head>
<body>
<div>
@if(ViewData["newInfoList"]!=null)
{
<table width="100%">
<tr><th>编号</th><th>标题</th><th>作者</th><th>时间</th><th>详细</th><th>删除</th></tr>
@foreach(T_News newlist in (List<T_News>)ViewData["newInfoList"])
{
<tr>
<td>@newlist.Id</td>
<td>@newlist.Title</td>
<td>@newlist.Author</td>
<td>@newlist.SubDateTime</td>
<td>详细</td>
<td>删除</td>
</tr>
}
</table>
<div class="page_nav">@MvcHtmlString.Create(PageBar.GetPageBar((int)ViewData["pageIndex"], (int)ViewData["pageCount"]))</div>
}
else
{
<span>暂无数据</span>
}
</div>
</body>
</html>

oa_mvc_easyui_分页(4)的更多相关文章

  1. 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题

    最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...

  2. js实现前端分页页码管理

    用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...

  3. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  4. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  5. NET Core-TagHelper实现分页标签

    这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...

  6. 套用JQuery EasyUI列表显示数据、分页、查询

    声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...

  7. php实现的分页类

    php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...

  8. C#关于分页显示

    ---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...

  9. JAVA 分页工具类及其使用

    Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...

随机推荐

  1. 06.旋转数组的最小数字 Java

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  2. linux vmware 安装步骤

    一.下载vmware软件 二.下载centos镜像文件 三.安装步骤 以上相当于于硬件设备已经准备ok,接下来安装软件

  3. springboot 项目部署后 404的问题

    是因为打包的时候,没有把webapp打包进去 pom.xml 在build 里加入下面的依赖即可 <!-- resources插件,在打jar包时可以将webapp目录下的文件进行打包 --&g ...

  4. 黑马lavarel教程---10、lavarel模型关联

    黑马lavarel教程---10.lavarel模型关联 一.总结 一句话总结: 1.模型关联比较方便,一次定义,后面都可以使用 2.关联关系 使用动态属性进行调用 1.一对多,多对多实例? 一对多: ...

  5. Boost无锁队列

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/okiwilldoit/article/details/50970408 在开发接收转发agent时, ...

  6. jxbrowser 实现自定义右键菜单

    https://blog.csdn.net/shuaizai88/article/details/73743691 public static void main(String[] args) { J ...

  7. ubuntu安装相关

    安装系统参考:http://xinzhi.wenda.so.com/a/1523530837610141 首先进行更新源 sudo apt-get update 安装codeblocks sudo a ...

  8. JSON-Runoob-工具:Json 格式化工具

    ylbtech-JSON-Runoob-工具:Json 格式化工具 1.返回顶部 1. http://c.runoob.com/front-end/53 2. 2.返回顶部   3.返回顶部   4. ...

  9. SVN图标详解

    蓝色的加号 : 把这个文件已经添加到版本控制软件内 绿色的对勾 : 客户端和服务器端的代码一致 红色的叹号 : 客户端和服务器端两边的代码不一致 黄色的叹号 : 文件冲突 蓝色的问号 : 这个文件不在 ...

  10. JavaScript 格式化数字成金额格式

    在看公司一个项目的JavaScript代码时,发现一段JavaScript代码,是把数字格式化成金额格式 比如: 12345.678 格式化成  12,345.68 看完代码后,google了一下,发 ...