EF真分页实例

ef框架十分的便利简单的tolist就可以加载列表,再也不用写麻烦的sql语句了。这里给大家介绍下ef框架下tolist的分页方法,直接上代码

(这里我用了简单的3层)首先是DAL层

  

1 public List<Model.Event> GetPagedListBy<TKey>(int pageIndex, int pageSize,out int pageCount, Expression<Func<Model.Event, bool>> whereLambda, Expression<Func<Model.Event, TKey>> orderBy)
2         {
3             pageCount= db.Event.Where(whereLambda).ToList().Count()%pageSize!=0?db.Event.Where(whereLambda).ToList().Count()/pageSize+1:
4             db.Event.Where(whereLambda).ToList().Count()/pageSize;
5             return db.Event.Where(whereLambda).OrderByDescending(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
6         }

解释下这里,首先在DAL层定义了一个方法GetPageListBy(),里面的5个参数分别是 当前页、每页条数、总页数、查询条件、排序方式,这里要注意out的用法,在参数定义前out是返回参数的意思,当查询时可以返回一个变量到方法。

然后是BLL层

1 public List<Model.Event> GetPagedListBy<TKey>(int pageIndex, int pageSize,out int pageCount,
2             Expression<Func<Model.Event, bool>> whereLambda, Expression<Func<Model.Event, TKey>> orderBy)
3         {
4             return dal.GetPagedListBy(pageIndex, pageSize,out pageCount, whereLambda, orderBy);
5         }

  这里没什么好解释的,pageCount也要out,还有要引用DAL层

然后就可以调用这个分页方法了,首先在客户端加上repeater控件绑定数据和简单的分页按钮butten

  

 1 <asp:Repeater ID="rptList" runat="server">
 2                 <ItemTemplate>
 3                     <tr>
 4                         <td><%#Container.ItemIndex +1%></td>//行号
 5                         <td><%#Eval("QuestionName") %></td>//数据
 6                         <td><%#Eval("AnswerName") %></td>//数据
 7                         <td><%#Eval("Qtime") %></td>//数据
 8                     </tr>
 9                 </ItemTemplate>
10             </asp:Repeater>
11
12         <div  style="margin: 0 auto; text-align: right; margin-top: 10px;">
13             <asp:Label ID="lblPage" runat="server" Text="当前 "></asp:Label>
14             <asp:Button ID="btnPrev" runat="server" Text="上一页" OnClick="btnPrev_Click" />
15             <asp:Button ID="btnNext" runat="server" Text="下一页" OnClick="btnNext_Click" />
16         </div>

然后是服务器端

 1         private int CurrentPage//定义当前页
 2         {
 3             get
 4             {
 5                 object currentPage = this.ViewState["CurrentPage"];
 6                 return currentPage == null ? 1 : Convert.ToInt32(currentPage);
 7             }
 8             set
 9             {
10                 this.ViewState["CurrentPage"] = value;
11             }
12         }
13
14         private void Data_Binding()//查询方法
15         {
16             const int pageSize = 10;//每页条数
17             int pageCount = 0;//临时变量
18             List<Model.Event> list = bll.GetPagedListBy(CurrentPage, pageSize, out pageCount, p => p.IsSolve == 0, p => p.ID);//根据IsSolve字段查询,ID排序
19             this.btnPrev.Enabled = CurrentPage != 1;z//当前页1将上一页按钮固定
20             this.btnNext.Enabled = CurrentPage != pageCount;//最后一页将下一页按钮固定
21             this.lblPage.Text = "当前 " + CurrentPage.ToString() + "/" + pageCount.ToString();//显示当前页
22             this.rptList.DataSource = list;//数据绑定
23             this.rptList.DataBind();
24
25         }
26 //按钮事件
27         protected void btnPrev_Click(object sender, EventArgs e)
28         {
29             CurrentPage -= 1;
30             Data_Binding();
31         }
32
33         protected void btnNext_Click(object sender, EventArgs e)
34         {
35             CurrentPage += 1;
36             Data_Binding();
37         }
38
39 //调用方法
40 protected void Page_Load(object sender, EventArgs e)
41         {
42             if (!IsPostBack)
43             {
44
45                 {
46                     Data_Binding();
47                 }
48
49             }
50
51         }

简单的分页,自己试试效果吧,这里就不上图了

时间: 2024-10-12 14:28:02

EF真分页实例的相关文章

Jsp分页实例---真分页

网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给客户端,由js来控制每一页的显示. 真分页:由程序控制,每一次只返回一页大小的数据,显示到客户端. 由此可以很清楚的分辨出真假分页各自的优缺点: 假分页:由于一次性读出所有数据并返回给客户端,如果数据量庞大,所以这一次的动作可能是非常消耗服务器资源和带宽的, 但是返回给客户端以后就非常轻松了,客户在

【菜鸟看框架】——MVC+EF实现分页

引言 分页这个名词对于现在的我们来说已经非常的熟悉,因为我知道了为什么我会在显示数 据的时候采用分页的形式,有人说为了显示的美观,有的人说为了在众多的数据中能容 易的找到我们想要的数据等等,这些都是其中的一些原因,但是这些东西我们完全可以 用VS自带的控件来实现,也就是所以的假分页,那么假分页和真分页的本质是什么呢? 假分页是一次性把所要的数据全部在数据库中查询出来,只是在显示的时候分页显示罢 了,这样显然是非常影响性能的,而真分页是每次取每页的数据条数,这样在大数据的 时候就能体现出了它的优势

Jsp分页实例---假分页

今天总结一个JSP假分页的实例,由基本功能由js实现. 相较前一篇真分页中程序的功能,丰富了一些.具备首页尾页,和页面跳转功能. 首先还是来总结一下真假分页的优缺点和特性吧. 假分页:从数据库中取出所有的数据,然后分页在界面上显示.访问一次数据库,但由于选择的数据量比较大,所以第一次花费时间比较长,但之后每一页的显示都是直接.快速的,避免对数据库的多次访问. 真分页:确定要显示的数量和内容,然后每次都去数据库取出该少量数据,优点是数据量小,缺点是访问数据库频繁. 综上:如果数据量较小,使用假分页

网站真分页js代码该怎么写?

真分页这个词对程序猿们来说,并不是一个陌生的词汇,但是如果你是初次学习真分页,或许还是得花点时间小小研究下,下面是之前去转盘网(喜欢的可以看看,也可以进入引擎模式)的真分页js部分代码,html部分的我就不写了,稍微处理下代码就可以使用的,你也可以根据需要灵活变动,千万不要懒惰哦,废话不说了,直接上代码: function get_param(param){ //这个函数是用来获取url的参数的 var query = location.search.substring(1).split('&'

RDIFramework.NET 中多表关联查询分页实例

RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为指导思想,作为异质系统整合与互操作性.分布式应用提供了可行的解决方案. 分页非常的常见,基本任何项目都会涉及到分页,这没什么好谈的,大多数我们分页对单表的分页比较多,对多表的分页我们可以通过视图来实现,当然还有其他的方式,在这儿,我以一个实例展示下使用我们的RDIFramework.NET来实现多表

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(一)

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中,这个问题分一下几步走 1.将弹出框真分页后复选框选择的数据保存. 2.将弹出框保存的数据传到父页面上. 3.将数据在父页面上显示. 4.点击保存将信息存入数据库中. 首先来第一步将弹出框真分页后复选框选择的数据保存. 思路很简单就是先真分页,然后在点击下一页的时候扫描这一页所有点击复选框的数据保存到一个变量数组中.下面就是主要代码: ASP代码: <%@ Page Language="C#" AutoEventWire

分页“真分页”获取数据

对于初学的新手来说,做数据分页的时候,经常是去网上下载个控件,所谓控件分页,有的人认为很好,因为方便,但是对于老鸟来说 控件分页查询效率太低,在实际工作中,也会带来致命的弱点,所以,我们一般采用真分页,部分查询,效率没得说!! 石家庄ReactNative交流群 526955818欢迎大家加入 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threadi

ThinkPHP分页实例

ThinkPHP分页实例 (2014-09-20 15:34:36) 很多人初学thinkphp时,不太熟悉thinkphp的分页使用方法,现在将自己整理的分页方法分享下,有需要的朋友可以看看. 控制器中的代码:   $db = M("cost"); $where = "查询条件"; $count = $db->where($where)->count(); $pagecount = 20; $page = new \Think\Page($count

ASP.NET真假分页—真分页

 承接上篇博文<ASP.NET真假分页-假分页>:http://blog.csdn.net/u010773667/article/details/38845009,继续讲解ASP.NET真假分页之真分页. 真分页 当数据量过大,有几万甚至十几万条数据时,每次都从数据库中取出所有数据就会降低查询效率,系统运行慢,还有可能卡死,这时假分页就会显得很不人性化,因此有了真分页的必要性. 正如上篇博文总结归纳,"真"相对于"假"存在,即不藕断丝连,从根部彻底断