Entity Framework后台采用分页方式取数据与AspNetPager控件的使用
2014-08-08 01:26
561 查看
转载至:http://www.cnblogs.com/jaxu/p/3655582.html
本文是一个对AspNetPager控件使用的笔记!
有关AspNetPager控件可以查看杨涛主页。这是一个开放的自定义ASP.NET控件,支持各种自定义的数据分页方式,使用很方便,而且功能也很强大,网站开发过程中使用该控件可以省去很多不必要的麻烦。
本页下载:AspNetPager745DLL.zip
然后看一下在页面上如何通过Entity Framework将分页数据传递给该控件以实现真分页。
页面前端代码:
页面后台代码:
使用起来很简单!首先需要告诉AspNetPager所要绑定的数据一共有多少条记录,然后通过 AspNetPager_PageChanged事件来获取分页数据。AspNetPager可以自定义各种不同的分页方式,也可以将分页参数通过URl 来传递,具体的使用方法可以查看杨涛主页上的帮助文档。下面给出如何让Entity Framework返回分页查询结果的代码。
也很简单,就是使用Skip()方法和Take()方法来获取分页之后的数据,Entity Framework知道如何去数据库中获取到正确的数据记录。上面代码中的IQueryableExtensions类中包含两个方法,分别是 IQueryable泛型和IEnumable泛型的扩展方法。
然后,你就可以在页面上享用功能强大的数据分页了!
本文是一个对AspNetPager控件使用的笔记!
有关AspNetPager控件可以查看杨涛主页。这是一个开放的自定义ASP.NET控件,支持各种自定义的数据分页方式,使用很方便,而且功能也很强大,网站开发过程中使用该控件可以省去很多不必要的麻烦。
本页下载:AspNetPager745DLL.zip
然后看一下在页面上如何通过Entity Framework将分页数据传递给该控件以实现真分页。
页面前端代码:
<asp:ListView ID="listView_alternative" runat="server" ItemPlaceholderID="layoutTableTemplate"> <LayoutTemplate> <table class="infolist_table" border="0" cellpadding="7" cellspacing="2"> <asp:PlaceHolder ID="layoutTableTemplate" runat="server"></asp:PlaceHolder> </table> <div class="navCateLine"></div> </LayoutTemplate> <ItemTemplate> <tr> <td> <a href='<%#string.Concat("./Info.aspx?id=", Eval("ID")) %>' title='<%#Eval("Title") %>' target="_self"><%#Eval("Title").ToString()%></a> </td> <td class="infolist_description"> <a href='<%#string.Concat("./Info.aspx?id=", Eval("ID")) %>' target="_self"><%#Eval("Description").ToString()%></a> </td> <td class="infolist_datetime"><%# Eval("PostDateTime") %></td> </tr> </ItemTemplate> <EmptyDataTemplate> <div class="prodEmptyList">没有相关内容!</div> </EmptyDataTemplate> </asp:ListView> <webdiyer:AspNetPager ID="AspNetPager1" runat="server" UrlPaging="true" ShowPageIndexBox="Always" PageIndexBoxType="DropDownList" TextBeforePageIndexBox="跳转到第 " TextAfterPageIndexBox=" 页" HorizontalAlign="Center" PageIndexBoxStyle="width:45px" PageSize="15" CssClass="pager" OnPageChanged="AspNetPager1_PageChanged"></webdiyer:AspNetPager>
页面后台代码:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { using (var context = new dbEntities()) { AspNetPager1.RecordCount = context.infolist.Where(n => n.delstate != "true").Count(); } } } private void BindData(int pageSize, int pageNumber) { using (var context = new dbEntities()) { var infoList = from info in context.infolist.AsEnumerable() where info.delstate != "true" orderby info.posttime descending select new { ID = info.id, Title = info.title, Description = info.description, PostDateTime = info.posttime }; listView_alternative.DataSource = infoList.ToPagedQuery(pageSize, pageNumber); listView_alternative.DataBind(); } } protected void AspNetPager1_PageChanged(object sender, EventArgs e) { BindData(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex); }
使用起来很简单!首先需要告诉AspNetPager所要绑定的数据一共有多少条记录,然后通过 AspNetPager_PageChanged事件来获取分页数据。AspNetPager可以自定义各种不同的分页方式,也可以将分页参数通过URl 来传递,具体的使用方法可以查看杨涛主页上的帮助文档。下面给出如何让Entity Framework返回分页查询结果的代码。
public static class IQueryableExtensions { /// <summary> /// Get the paged records. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="query"></param> /// <param name="pageSize"></param> /// <param name="pageNumber"></param> /// <returns></returns> public static IQueryable<T> ToPagedQuery<T>(this IQueryable<T> query, int pageSize, int pageNumber) { return query.Skip(pageSize * (pageNumber - 1)).Take(pageSize); } /// <summary> /// Get the paged records. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="query"></param> /// <param name="pageSize"></param> /// <param name="pageNumber"></param> /// <returns></returns> public static IEnumerable<T> ToPagedQuery<T>(this IEnumerable<T> query, int pageSize, int pageNumber) { return query.Skip(pageSize * (pageNumber - 1)).Take(pageSize); } }
也很简单,就是使用Skip()方法和Take()方法来获取分页之后的数据,Entity Framework知道如何去数据库中获取到正确的数据记录。上面代码中的IQueryableExtensions类中包含两个方法,分别是 IQueryable泛型和IEnumable泛型的扩展方法。
然后,你就可以在页面上享用功能强大的数据分页了!
相关文章推荐
- Entity Framework后台采用分页方式取数据与AspNetPager控件的使用
- PagedDataSource数据绑定控件和AspNetPager分页控件结合使用列表分页
- DbEntry采用分页技术显示数据在GridView里面并用AspNetPager控件来显示分页
- asp.net的DataGrid分页控件,在Oracle数据库下,每次只取当前页的数据,不使用存储过程。
- 使用DataList分页显示数据,双向排序,添加checkbox控件。
- 使用AspNetPager分页控件、分页存储过程及用户控件基类实现的完美分页功能
- ASP.NET中DataList控件和AspNetPager控件的组合使用并实现分页
- AspNetPager分页控件的使用
- ASP.NET 数据列表控件的分页总结(二)---------使用存储过程分页
- ASP.NET中DataList控件和AspNetPager控件的组合使用并实现分页
- 数据绑定控件和XmlDataSource控件结合使用,通过后台绑定Xml数据片段遇到的问题
- AspnetPager分页控件的使用
- AspNetPager控件分页使用方法
- SQLServer采用分页的方式查询数据
- [参考]一个ASP.Net的DataGrid分页控件,在Oracle数据库下,每次只取当前页的数据,不使用存储过程
- 在ASP.Net With C# 中使用 DataGrid 控件分页展示数据
- 使用AspNetPager分页控件、分页存储过程及用户控件基类实现的完美分页功能
- 使用Silverlight Toolkit的数据分页控件---DataPager
- [原创]使用DataList分页显示数据,双向排序,添加checkbox控件。
- 使用Silverlight Toolkit的数据分页控件---DataPager