分页: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 ...
随机推荐
- php知识--递归
<?php // /* * 遍历输出文件夹中的所有内容 * @param1 string $dir,要遍历的路径 * @param2 int $level = 0,当前的级别 */ functi ...
- 如何将mongodb bson文件转成json文件
使用mongodb自带的命令 bsondump collection.bson > collection.json
- nyoj 528 找球号(三)(哈希)
点解:题目链接 两种办法,1是使用容器set做 2必须知道这个结论, 突然感觉数论很强大啊,,,, /*//set容器处理 出一次加进去,再出现删掉,这个最后留下的就是那个只出现基数次的 #incl ...
- 转: git常用命令
# git配置 #---------------------------------------------- #配置用户名和邮箱: $ git config --global user.name & ...
- HDU 5726 GCD(DP)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5726 [题目大意] 给出数列An,对于询问的区间[L,R],求出区间内数的GCD值,并且求出GCD ...
- poj 1961 Period(KMP训练指南例题)
Period Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 11356 Accepted: 5279 Descripti ...
- XML DOM 节点
来自:w3cschool菜鸟教程 在 DOM 中,XML 文档中的每个成分都是一个节点. DOM 节点 根据 DOM,XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档 ...
- Amazon S3 API
一.概述 Amazon s3,全称为Amazon Simple Storage Service.EC2和S3是Amazon最早推出的两项云服务. REST,这也是比较火的一种Web服务架构.简单来说 ...
- [C#绘图]Matrix类
想要从入门到精通一门语言,最好的学习文档就是官方提供的文档,比如说OpenCV的学习,最权威的学习资料还是其官方的学习文档,C#和.net的最好的学习入门文档还是MSDN.但是好多人一开始真的不会用, ...
- Asp.net 网站发布之文件系统方式
1.选中项目右键→发布方式选[文件系统]→点击发布 2.打开[Internet 信息服务(IIS)管理器] 默认网站(Default Web Site)→添加应用程序 填写[别名],[物理路径]选择上 ...