分页:T-SQL存储过程和EF存储过程的使用
首先准备好分页的T-SQL语句:
create proc usp_activityFenYe
@pageIndex int,
@pageSize int,
@pageCount int output
as
declare @count int
begin
select @count=COUNT(*) from Activity
set @pageCount=CEILING(@count*1.0/@pageSize)
select * from(select *,ROW_NUMBER()over(order by activityid) as num from Activity) as t
where num between (@pageIndex-)*@pageSize+ and @pageIndex*@pageSize
order by ActivityID asc
end
ADO.NET操作:
(1)DAL:
public class ActivityDAL
{
public List<Activity> GetList(int pageIndex, int pageSize, out int pageCount)
{
SqlParameter[] pms = new SqlParameter[] {
new SqlParameter("@pageIndex",pageIndex),
new SqlParameter("@pageSize",pageSize),
new SqlParameter("@pageCount",)
};
pms[].Direction = ParameterDirection.Output;
List<Activity> list = new List<Activity>();
DataTable dt = DBHelper.ExecuteTableSP("usp_activityFenYe", pms);
if (dt.Rows.Count > )
{
Activity model = new Activity();
foreach (DataRow row in dt.Rows)
{
model = LoadEntity(row);
list.Add(model);
}
}
pageCount = Convert.ToInt32(pms[].Value);
return list;
} private Activity LoadEntity(DataRow row)
{
Activity model = new Activity();
model.ActivityID = Convert.ToInt32(row["ActivityID"]);
model.Name = row["Name"].ToString();
return model;
}
}
(2)BLL:
public class ActivityBLL
{
ActivityDAL dal;
public ActivityBLL()
{
dal = new ActivityDAL();
}
public List<Activity> GetList(int pageIndex, int pageSize, out int pageCount)
{
return dal.GetList(pageIndex, pageSize, out pageCount);
}
}
(3)View:
public class ActivityController : Controller
{
ActivityBLL bll;
DBEntities db;//数据上下文
public ActivityController()
{
bll = new ActivityBLL();
db = new DBEntities();
}
public ActionResult Index(int? pageIndex)
{
//1.ADO.NET
int pageSize = ;
int pageCount;
List<Model.Activity> list = bll.GetList(pageIndex ?? , pageSize, out pageCount);
if (Request.IsAjaxRequest())
{
return Json(list, JsonRequestBehavior.AllowGet);
}
ViewBag.pageCount = pageCount;//总页数 //2.EF存储过程
ObjectParameter obj = new ObjectParameter("pageCount", typeof(int));//注意:前面不要写@
ObjectResult<usp_activityFenYe_Result> result = db.usp_activityFenYe(pageIndex ?? , pageSize, obj);//使用之前记得导入存储过程
//ViewBag.pageCount = obj.Value;//EF传出的总页数 //3.另外一种基于EF的方法
SqlParameter pCount = new SqlParameter("pageCount", -);//注意:前面不要写@
pCount.Direction = System.Data.ParameterDirection.Output;
SqlParameter pIndex = new SqlParameter("@pageIndex", );
SqlParameter pSize = new SqlParameter("pageSize", );
List<Models.Activity> data = db.Database.SqlQuery<Models.Activity>("exec usp_activityFenYe @pageIndex,@pageSize,@pageCount output", new object[] { pCount,pIndex,pSize}).ToList();
return View(list);
}
}
(4)Razor:
@{
Layout = null;
}
@model IEnumerable<Ado.Net.Model.Activity>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script>
function show(index) {
$.getJSON("@Url.Action("Index")", { pageIndex: index }).success(function (data) {
var text = "";
for (var i = 0; i < data.length; i++) {
text += "<tr><td>" + data[i].ActivityID + "</td><td>" + data[i].Name + "</td><td><a href='javascript:;' onclick='del(" + data[i].ActivityID + ")'>删除</a></td><td><a href='javascript:window.location.href=@Url.Action("Modify")?id=" + data[i].ActivityID + ")'>修改</a></td></tr>";
}
$("#table").html(text);
$(".pagination li").removeClass("active").eq(index - 1).addClass("active");
})
};
function del(id) {
if (confirm("确定删除")) {
$.post("@Url.Action("Del")", { id: id }).success(function (data) {
if (data.status == 200)
show(1);
})
}
};
</script>
</head>
<body>
<div class="container">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>活动ID</th>
<th>名称</th>
<th>操作</th>
</tr>
</thead>
<tbody id="table">
@foreach (var i in Model)
{
<tr>
<td>@i.ActivityID</td>
<td>@i.Name</td>
<td><a href="javascript:;" onclick="del(@i.ActivityID)">删除</a></td>
<td><a href="@Url.Action("Modify", new { id = i.ActivityID })">修改</a></td>
</tr>
}
</tbody>
</table>
<nav>
<ul class="pagination pagination-lg">
@for (int i = 1; i <= ViewBag.pageCount; i++)
{
<li @(i == 1 ? "class=active" : "")><a href="javascript:;" onclick="show(@i)">@i</a></li>
}
</ul>
</nav>
</div>
</body>
</html>
分页:T-SQL存储过程和EF存储过程的使用的更多相关文章
- SQL Server基础之存储过程
简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理.本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作. 一:存储过程概述 ...
- 【SQL Server】SQL Server基础之存储过程
SQL Server基础之存储过程 阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...
- 存储过程系列之存储过程具体操作过程及sql数据库调用
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...
- (转)SQL Server基础之存储过程(清晰使用)
阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程 简单来说,存储过程就是一条或 ...
- Sql Server数据库之存储过程
阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程 简单来说,存储过程就是一条或 ...
- LINQ to SQL语句(20)之存储过程
在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...
- Sql Server系列:存储过程
1 存储过程简介 存储过程是使用T-SQL代码编写的代码段.在存储过程中,可以声明变量.执行条件判断语句等其他编程功能.在MS SQL Server 2012中存储过程主要分三类:系统存储过程.自定义 ...
- SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨
SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢 ...
- SQL组合查询的存储过程写法
最进一个项目 里面有个查询的功能,它是进行组合查询的, 而且用的是存储过程写.写这样的存储过程,需要注意单引号的使用,请看本人下面的例子,假如你以后写的话 记得注意写就行: create proc s ...
随机推荐
- symfony2-创建提交表单生成数据过程
一.”一对多“关系 表shop(一)
- MySQL学习系列一---命令行连接mysql和执行sql文件
1.命令行连接mysql #mysql -h(主机) -u(用户名) -p (数据库名) mysql -hlocalhost -uroot -p testdb Enter password: **** ...
- ubuntu中查找软件的安装位置
ubuntu中的软件可通过图形界面的软件中心安装,也可以通过命令行apt-get install安装.但是安装后的软件在哪个位置呢?这点跟windows环境下安装软件的路径选择不一样.ubuntu中可 ...
- windows理论基础(一)
windows体系结构 一. 用户模式和内核模式 (user mode &kernel mode) Intel x86 处理器的体系结构定义了四种特权级,或特为四个环.来保护系统代码不会被低 ...
- safari的调试工具
safari的调试工具默认是没有打开的设置——>偏好设置——>高级———>在菜单栏中显示开发菜单
- JSP打印九九乘法表
##index.jsp: <%@ page language="java" import="java.util.*" pageEncoding=" ...
- Windows环境下用C#编程将文件上传至阿里云OSS笔记
Windows环境下用C#编程将文件上传至阿里云OSS笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/detai ...
- HDU2159:FATE(二维完全背包)
Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级.现 ...
- PS学习之图像选区
一. 选区的基本操作 快速选择选区与反选选区.取消选区 选择-->全选 或者 CTRL + A 反选CTRL + SHIFT + I ,取消选区 CTRL + D, SHIFT 执行等比例操作 ...
- iOS中的地图和定位
文章摘自http://www.cnblogs.com/kenshincui/p/4125570.html#location 如有侵权,请联系删除. 概览 现在很多社交.电商.团购应用都引入了地图和定 ...