本文是一个对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 - )).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 - )).Take(pageSize);
}
}

  也很简单,就是使用Skip()方法和Take()方法来获取分页之后的数据,Entity Framework知道如何去数据库中获取到正确的数据记录。上面代码中的IQueryableExtensions类中包含两个方法,分别是IQueryable泛型和IEnumable泛型的扩展方法。

  然后,你就可以在页面上享用功能强大的数据分页了!

Entity Framework后台采用分页方式取数据与AspNetPager控件的使用的更多相关文章

  1. Entity Framework入门教程: Entity Framework支持的查询方式

    Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...

  2. Entity Framework常用的查询方式

    Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...

  3. Entity framework 加载多层相关实体数据

    Entity framework有3种加载数据的方式:懒汉式(Lazy loading),饿汉式(Eager loading),显示加载(Explicit loading).3种加载方式有各自的优缺点 ...

  4. Android 采用post方式提交数据到服务器

    接着上篇<Android 采用get方式提交数据到服务器>,本文来实现采用post方式提交数据到服务器 首先对比一下get方式和post方式: 修改布局: <LinearLayout ...

  5. 如何分页爬取数据--beautisoup

    '''本次爬取讲历史网站'''#!usr/bin/env python#-*- coding:utf-8 _*-"""@author:Hurrican@file: 分页爬 ...

  6. (转) .NET实现Repeater控件+AspNetPager控件分页

    SqlConnection (.NET C#) 连接及分页 .net的访问数据机制决定了访问大量数据时会致使客户端机器消耗大量资源,因此有必要对数据进行分页显示,开发工具vs.net+sqlserve ...

  7. 使AspNetPager控件中文显示分页信息

    在日常的编程过程中,很多学员对于使AspNetPager控件中文显示分页信息不是很清楚,本文将由达内的老师为各位学员介绍一下使AspNetPager控件中文显示分页信息的内容. AspNetPager ...

  8. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)

    VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 文本框txtStopTime1 时间框DTStopTime1(DTPicke ...

  9. WPF数据模板和控件模板

     WPF中有控件模板和数据模板,控件模板可以让我们自定义控件的外观,而数据模板定义了数据的显示方式,也就是数据对象的可视结构,但是这里有一个问题需要考虑,数据是如何显示出来的?虽然数据模板定义了数 ...

随机推荐

  1. VC++ 浅谈VS2010中CMFCToolBar的用法

    本文将给大家介绍Visual Studio 2010中CMFCToolBar的用法,CMFCToolBar可以让用户自定义工具栏图标,使用静态成员函数SetUserImages()将一个CMFCToo ...

  2. 动态ViewPager导航页面

    今天新学知识总计,个人信息,仅供参考: item设置: viewpager页面设置: <?xml version="1.0" encoding="utf-8&quo ...

  3. lucene prefixQuery

    prefixQuery是lucene的一个前缀匹配的搜索功能,但是它的前缀匹配不是完全的前缀匹配,的query生成是:易* 但是能把所有带有易字的都搜到... 下面是实验:出现了交易...

  4. (转)MVC,MVP 和 MVVM 的图示

    作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身 ...

  5. 利用Lambda获取属性名称

    感谢下面这篇博文给我的思路: http://www.cnblogs.com/daimage/archive/2012/04/10/2440186.html 上面文章的博主给出的代码是可用的,但是调用方 ...

  6. POJ 3181 Dollar Dayz DP

    f[i][j]=f[i-j][j]+f[i][j-1],结果很大需要高精度. //#pragma comment(linker, "/STACK:1024000000,1024000000& ...

  7. Servlet 的认识

    Servlet的响应过程:1,web 客户端向 Servlet容器发出http请求2,Servlet容器接收 客户端发来的请求3,创建一个 HttpRequest对象,将客户端发来的请求信息封装到这个 ...

  8. 2748: [HAOI2012]音量调节

    Description 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改 ...

  9. PHP裁剪图片并上传完整demo

    日前根据功能需求,要做一个图片裁剪上传的功能,在网上找了好久,找到了这位仁兄写的demo! 下载压缩包

  10. 有关big.LITTLE,你需要知道的十件事情

    来源 问题 1:该技术能够同时打开所有核心吗?   在早期的 big.LITTLE 软件模型中(集群迁移和 CPU 迁移),软件在核心之间切换,不能同时打开所有核心.在更新的软件模型“全局任务调度”中 ...