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; ...
随机推荐
- php项目权限系统设计
原文地址:https://blog.csdn.net/u013090676/article/details/77893237 说起php的权限,很多人都容易想起rbac,这里不多介绍.下面介绍一种通用 ...
- ASP.NET Core-Docs:在 ASP.NET Core 中启用跨域请求(CORS)
ylbtech-ASP.NET Core-Docs:在 ASP.NET Core 中启用跨域请求(CORS) 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. ...
- 阶段3 3.SpringMVC·_07.SSM整合案例_03ssm整合之编写Spring框架
做整合要保证每个框架单独使用 先搭建Spring的框架,然后再整合别的框架.Spring是业务层的框架 spring的配置文件 这就表示是spring的配置文件 默认的约束不够,需要修改. <b ...
- datatable 用法
DataTable datainsert = dt.GetChanges(DataRowState.Added); DataTable datadelete = dt.GetChanges(DataR ...
- kvm简介及创建虚拟化安装(1)
kvm虚拟化介绍 一.虚拟化分类 1.虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立 ...
- golang(08)接口介绍
原文链接 http://www.limerence2017.com/2019/09/12/golang13/#more 接口简介 golang 中接口是常用的数据结构,接口可以实现like的功能.什么 ...
- 重置csr
重置csr 注意:下面操作仅在刚安装k8s后24小时内有效 分析:kubelet启动后会生成如下文件.kubelet.conf文件决定了csr的存在,如果要想重新获取csr,可以停掉kubelet,删 ...
- Linux下python安装升级详细步骤 | Python2 升级 Python3 转载
Linux下python升级步骤 Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如 ...
- appium环境搭建步骤
前提条件是:搭建selenium环境(侵权删) 1.安装jdk,配置环境变量: JAVA_HOME C:\Program Files\Java\jdk1.8.0_60(jdk的存放路径) CLASSP ...
- 【HANA系列】SAP HANA SQL计算某日期是当年的第几天
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL计算某日 ...