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         }
View Code

 

解释下这里,首先在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         }
View Code

 

  这里没什么好解释的,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>
View Code

 

然后是服务器端

 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         }
View Code

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

 

转载于:https://www.cnblogs.com/Ayaya/p/4761330.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值