分页: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 ...
随机推荐
- FileNameExtensionFilter文件过滤
package com.soft.test; import javax.swing.*; import javax.swing.filechooser.*; import java.awt.event ...
- 与《YII框架》不得不说的故事—5篇目录
与<YII框架>不得不说的故事—基础篇 第1章 课程目标 1-1 课程目标 (00:54) 第2章 课前知识准备 2-1 YII的启动和安装 (05:12) 2-2 YII请求处理流程 ( ...
- Mysql笔记之 -- 开启Mysql慢查询
Mysql慢查询日志_1--如何开启慢查询日志 Windows下开启MySQL慢查询 MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上 log-slow-qu ...
- 四轴飞行器1.5 各种PID对比分析及选择
原创文章,欢迎转载,转载请注明出处 这篇文章主要介绍我对PID的理解,以及选择PID算法的过程. 一 PID的理解和学习过程 二 飞控的PID效果 先上个飞控PID的响应的视频:介绍在后面 地址:ht ...
- 基于JDK 8的Dubbo Admin
在使用Dubbo Admin的时候,一直报错,无法启动,因为Dubbo Admin使用的各种库相对是比较旧的,在JDK 8下,有些小问题 具体解决过程参考的以下链接 https://github.c ...
- Windows 技巧
1.反选 快捷键: Alt+E+I 2. windows7 以上 cmd命令 切换目录 F:\>cd /d c:\windowsc:\Windows> 3.
- 多线程中Local Store Slot(本地存储槽)
在Java中有一种ThreadLocal机制,为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突.从线程的角度看,就好像每一个线程都完全 ...
- VM Agent 和扩展程序
VM Agent 和扩展程序 - 第 1 部分 Windows Azure基础结构服务最近宣布了一项新功能VM Agent.VMAgent是一个轻量级进程,用于启动由Microsoft或合作伙伴 ...
- josscrowcroft / Simple-JavaScript-DOM-Inspector
josscrowcroft / Simple-JavaScript-DOM-Inspector josscrowcroft / Simple-JavaScript-DOM-Inspector
- GridView行编辑、更新、取消、删除事件使用方法
注意:当启用编辑button时,点击编辑button后会使一整行都切换成文本框.为了是一行中的一部分是文本框,须要把以整行的全部列都转换成模板,然后删掉编辑模板中的代码.这样就能使你想编辑的列转换成文 ...