首先准备好分页的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存储过程的使用的更多相关文章

  1. SQL Server基础之存储过程

      简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理.本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作. 一:存储过程概述 ...

  2. 【SQL Server】SQL Server基础之存储过程

    SQL Server基础之存储过程  阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...

  3. 存储过程系列之存储过程具体操作过程及sql数据库调用

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...

  4. (转)SQL Server基础之存储过程(清晰使用)

    阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程   简单来说,存储过程就是一条或 ...

  5. Sql Server数据库之存储过程

    阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程   简单来说,存储过程就是一条或 ...

  6. LINQ to SQL语句(20)之存储过程

    在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...

  7. Sql Server系列:存储过程

    1 存储过程简介 存储过程是使用T-SQL代码编写的代码段.在存储过程中,可以声明变量.执行条件判断语句等其他编程功能.在MS SQL Server 2012中存储过程主要分三类:系统存储过程.自定义 ...

  8. SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨

    SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢 ...

  9. SQL组合查询的存储过程写法

    最进一个项目 里面有个查询的功能,它是进行组合查询的, 而且用的是存储过程写.写这样的存储过程,需要注意单引号的使用,请看本人下面的例子,假如你以后写的话 记得注意写就行: create proc s ...

随机推荐

  1. iOS开发的准备

    一.程序设计语言 上一讲已经说到:要想开发一款软件,首先得学习一些相应的程序设计语言.至于iOS开发,需要学习的语言主要有:C.C++.Objective-C. 二.是否需要计算机专业知识 可能很多人 ...

  2. SVN创建分支

    工具:TortoiseSVN 创建一个空白项目,例如OA 从客户端检出OA,在OA文件夹下新建三个子文件夹 trunk:存放开发的主线,团队成员在开发的时候一直要用这个库中的内容 branches:存 ...

  3. 解决Flex4 发布后访问 初始化极其缓慢的问题

    原文http://blog.163.com/vituk93@126/blog/static/170958034201282222046364/ 昨天找了个免费.net空间,想测试一下做的一个简单Fle ...

  4. HDU 4417 Super Mario

    题解:函数式线段树求区间小于等于k的数有几个,离线做法,首先将所有询问和序列一起离散,然后用函数式线段树处理. #include <map> #include <cstdio> ...

  5. poj 1815 Friendship (最小割+拆点+枚举)

    题意: 就在一个给定的无向图中至少应该去掉几个顶点才干使得s和t不联通. 算法: 假设s和t直接相连输出no answer. 把每一个点拆成两个点v和v'',这两个点之间连一条权值为1的边(残余容量) ...

  6. uva 10763 Foreign Exchange(排序比较)

    题目连接:10763 Foreign Exchange 题目大意:给出交换学生的原先国家和所去的国家,交换成功的条件是如果A国给B国一个学生,对应的B国也必须给A国一个学生,否则就是交换失败. 解题思 ...

  7. HTML5 postMessage 和 onmessage API 具体应用

    HTML5 postMessage 和 onmessage API 具体应用 随着 HTML5 的发展.了解并熟悉 HTML5 的 API 接口是很重要的.postMessage(send) 和 on ...

  8. Android Develop【转】

    [Android Develop]   Android实现伸缩弹力分布菜单效果 摘要: 本文介绍下在Android中实现伸缩弹力分布菜单效果.关于这种菜单效果在IPhone中比较常见,效果比较酷.那么 ...

  9. CodeIgniter框架开发的统计程序源代码开放

    文章来源: PHP开发学习门户 自己初学php时,用CodeIgniter框架开发的后台统计程序源代码 程序部分页面如图: 具体配置及下载源代码:http://bbs.phpthinking.com/ ...

  10. c语言中-----分配内存函数

    原型: void * realloc(void *p, size_t  size); realloc 可以对给定的指针所指的空间进行扩大 或者 缩小, 原有内存的数据保持不变.当然,对于缩小,则缩小部 ...