分页: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 ...
随机推荐
- sql server 修改表自增列的值
Create PROCEDURE [dbo].[SP_UpdateIdentityId] ( ) , @beforeId INT , @afterId INT ) AS BEGIN IF @befor ...
- java axis web service
编写 java调用web service的客户端比较简单,其中webservice为上一篇gsoap创建的server. package clientTest; import java.rmi.Rem ...
- 激活工具 – Microsoft Toolkit 2.4.7
Microsoft Toolkit是一款很出名的Windows/Office激活工具,最早是因为激活Office 2010出名的,想必不少人也用过吧?Microsoft Toolkit从2.4.1版本 ...
- pyqt中使用matplotlib绘制动态曲线 – pythonic
一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...
- php环境配置优化
Php相关配置 – 基础 max_execution_time = 30 max_input_time = 60 memory_limit = 128 Mmax_input_vars = 1000 r ...
- fastDFS同步问题讨论
一.文件同步延迟问题 前面也讲过fastDFS同组内storage server数据是同步的, Storage server中由专门的线程根据binlog进行文件同步.为了最大程度地避免相互影响以及出 ...
- [置顶] jsp中c标签的使用
jsp中c标签的使用 核心标签库 它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量.重复使用一组项目.测试条件和其他操作(如导入和重定向Web内容).Core标签按功能可分为4种类型: ...
- Swift 中类的初始化器与继承
首先,Swift 为类定义了两种初始化器来确保类中所有的储存属性都能得到一个初始化值.这两种初始化器就是「指定初始化器」(Designated Initializer)与「便利初始化器」(Conven ...
- HDU3853-LOOPS(概率DP求期望)
LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Total Su ...
- CodeForces 160D - Distance in Tree 树型DP
题目给了512MB的空间....用dp[k][i]代表以k为起点...往下面走(走直的不打岔)i步能有多少方案....在更新dp[k][i]过程中同时统计答案.. Program: #include& ...