oa_mvc_easyui_分页(4)
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)的更多相关文章
- 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- js实现前端分页页码管理
用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- 套用JQuery EasyUI列表显示数据、分页、查询
声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...
- php实现的分页类
php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...
- C#关于分页显示
---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...
- JAVA 分页工具类及其使用
Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...
随机推荐
- NDK OpenGLES3.0 开发(五):FBO 离屏渲染
什么是 FBOFBO(Frame Buffer Object)即帧缓冲区对象,实际上是一个可添加缓冲区的容器,可以为其添加纹理或渲染缓冲区对象(RBO). FBO 本身不能用于渲染,只有添加了纹理或者 ...
- Leetcode题目34.在排序数组中查找元素的第一个和最后一个位置(中等)
题目描述: 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标 ...
- mysql统计前24小时数据没有补0
SELECT t1. HOUR HOUR, COUNT(t2. HOUR) count FROM ( SELECT DATE_FORMAT( HOUR), '%y-%m-%d %H' ) HOUR F ...
- java编程出现的错误对应的解决方法
error: could not open D:\java\jre1.8\lib\amd64\jvm.cfg 解决方法:把java的环境变量%JAVA_HOME%/bin上移到最上面 优化 查看网页源 ...
- Anaconda 改为国内镜像的方法
Anaconda的conda 特别好用 但如果用国外的镜像,慢的出奇 可以改为了国内镜像会好很多 conda config --add channels https://mirrors.tuna.ts ...
- 云服务器 ECS 是什么?
云服务器 Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务.使用云服务器 ECS 就像使用水.电.煤气等资源一样便捷.高效.您无需提前采购硬件设备,而是根据业务 ...
- LC 553. Optimal Division
Given a list of positive integers, the adjacent integers will perform the float division. For exampl ...
- Xman冬令营writeup
做题一时爽,期末火葬场,一晚上水了三题,跪求期末不挂,老老实实去复习.祝各位表哥冬令营玩的开心. 中二的成长之路 很容易发现图片本身就是个压缩包,里面还有个图片,但是加密了所以需要我们求出压缩包的密码 ...
- LoadRunner参数化详解
LoadRunner参数化详解 距离上次使用loadrunner 已经有一年多的时间了.初做测试时在项目中用过,后面项目中用不到,自己把重点放在了工具之外的东西上,认为性能测试不仅仅是会用工具,最近又 ...
- nginx 配置方向代理出错 The character [_] is never valid in a domain name
nginx 配置方向代理出错 The character [_] is never valid in a domain name 下面是配置信息: 原因是使用的tomcat为8及以上的版本时upstr ...