前台: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LinqCustomPager._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <style type="text/css"> tr td { font-size: small; font-family: @宋体; text-align: center; border-left: solid thin Black; border-right: solid thin Black; border-collapse: collapse; } .tr_title { font-weight: bold; border-left: solid thin Black; border-right: solid thin Black; border-top: solid thin Black; border-bottom: solid thin Black; border-collapse: collapse; } .tr_content { border-left: solid thin Black; border-right: solid thin Black; border-top: solid thin Black; border-bottom: solid thin Black; border-collapse: collapse; } </style></head><body> <form id="form1" runat="server"> <center> <div align="center"> LINQ自定义真分页测试<asp:ScriptManager ID="ScriptManagerRepeater" runat="server"> </asp:ScriptManager> <table width="1000px" style="border-color: Black; border-style: solid; border-width: thin; border-collapse: collapse"> <tr> <td colspan="10"> 查询条件 </td> </tr> <tr class="tr_title"> <td style="width: 100px"> 姓名 </td> <td style="width: 100px"> <asp:TextBox ID="txtQueryName" runat="server"></asp:TextBox> </td> <td style="width: 100px"> 公司 </td> <td style="width: 100px"> <asp:TextBox ID="txtQueryCompany" runat="server"></asp:TextBox> </td> <td style="width: 100px"> 职位 </td> <td style="width: 100px"> <asp:TextBox ID="txtQueryJob" runat="server"></asp:TextBox> </td> <td style="width: 100px"> 邮编 </td> <td style="width: 100px"> <asp:TextBox ID="txtQueryZipcode" runat="server"></asp:TextBox> </td> <td colspan="2" style="width: 200px"> <asp:Button ID="btnQuery" runat="server" Text="查询" Font-Size="Small" BorderStyle="Solid" OnClick="btnQuery_Click" /> </td> </tr> </table> <br /> <asp:UpdatePanel ID="upGuideTeacher" runat="server" UpdateMode="Always"> <ContentTemplate> <table width="1000px" style="border-color: Black; border-style: solid; border-width: thin; border-collapse: collapse"> <tr class="tr_title"> <td style="width: 30px"> 序号 </td> <td style="width: 30px"> 类型 </td> <td style="width: 50px"> 姓名 </td> <td style="width: 120px"> 公司 </td> <td style="width: 200px"> 职位 </td> <td style="width: 180px"> 地址 </td> <td style="width: 60px"> 邮编 </td> <td style="width: 80px"> 联系电话 </td> <td style="width: 80px"> 联系手机 </td> <td style="width: 170px"> 邮箱 </td> </tr> <asp:Repeater ID="rpGuideTeacher" runat="server"> <ItemTemplate> <tr class="tr_content"> <td> <%#Container.ItemIndex + 1 %> </td> <td> <%#Eval("GuideTeacherType")%> </td> <td> <%#Eval("GuideTeacherName")%> </td> <td> <%#Eval("GuideTeacherCompany")%> </td> <td> <%#Eval("GuideTeacherJob")%> </td> <td> <%#Eval("GuideTeacherAddress")%> </td> <td> <%#Eval("GuideTeacharZipCode")%> </td> <td> <%#Eval("GuideTeacherPhone")%> </td> <td> <%#Eval("GuideTeacherMobile")%> </td> <td> <%#Eval("GuideTeacherEmail")%> </td> </tr> </ItemTemplate> </asp:Repeater> </table> <div style="font-size: small" align="center"> 共<asp:Label ID="lblTotalPageCount" runat="server" ForeColor="Red"></asp:Label>页 当前第<asp:Label ID="lblCurrentPage" runat="server" ForeColor="Red"></asp:Label>页 共<asp:Label ID="lblTotalRecordCount" runat="server" ForeColor="Red"></asp:Label>条记录 <asp:LinkButton ID="lkbtnFirst" runat="server" Text="首页" OnClick="lkbtnFirst_Click"></asp:LinkButton> <asp:LinkButton ID="lkbtnPrev" runat="server" Text="上一页" OnClick="lkbtnPrev_Click"></asp:LinkButton> <asp:LinkButton ID="lkbtnNext" runat="server" Text="下一页" OnClick="lkbtnNext_Click"></asp:LinkButton> <asp:LinkButton ID="lkbtnLast" runat="server" Text="尾页" OnClick="lkbtnLast_Click"></asp:LinkButton> 每页显示<asp:DropDownList ID="ddlPageSize" runat="server" OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged" AutoPostBack="true"> </asp:DropDownList> 条 转跳至第<asp:DropDownList ID="ddlGo" runat="server" OnSelectedIndexChanged="ddlGo_SelectedIndexChanged" AutoPostBack="true"> </asp:DropDownList> 页</div> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="lkbtnFirst" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="lkbtnPrev" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="lkbtnNext" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="lkbtnLast" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="ddlPageSize" EventName="SelectedIndexChanged" /> <asp:AsyncPostBackTrigger ControlID="ddlGo" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> </div> </center> </form></body></html> 后台: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls; namespace LinqCustomPager{ public partial class _Default : System.Web.UI.Page { private int pageIndex = 1; private int pageSize = 10; /// <summary> /// 选取需要显示的分页数 /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> private int GuideTeacherDataBind(int pageIndex, int pageSize) { DavidContextDataContext davidcontext = new DavidContextDataContext(); int totalCount = davidcontext.BIGuideTeacher.Count(); int pageCount = totalCount % pageSize == 0 ? (totalCount / pageSize) : ((totalCount / pageSize) + 1); pageIndex = pageIndex <= pageCount ? pageIndex : 1;//防止在10条情况下选中11页在选50条情况 var items = davidcontext.BIGuideTeacher.Skip((pageIndex - 1) * pageSize).Take(pageSize); lblTotalPageCount.Text = pageCount.ToString(); lblCurrentPage.Text = pageIndex.ToString(); lblTotalRecordCount.Text = totalCount.ToString(); //绑定每页条数 ddlPageSize.Items.Clear(); ddlPageSize.SelectedValue = pageSize.ToString(); for (int i = 10; i <= 50; i = i + 10) { ddlPageSize.Items.Add(new ListItem(i.ToString(), i.ToString())); } ddlPageSize.DataBind(); //绑定对应页数 ddlGo.Items.Clear(); ddlGo.SelectedValue = pageIndex <= pageCount ? pageIndex.ToString() : "1"; for (int i = 1; i <= pageCount; i++) { ddlGo.Items.Add(new ListItem(i.ToString(), i.ToString())); } ddlGo.DataBind(); lkbtnFirst.Enabled = lkbtnPrev.Enabled = lkbtnNext.Enabled = lkbtnLast.Enabled = true; if (lblCurrentPage.Text == "1") { lkbtnFirst.Enabled = lkbtnPrev.Enabled = false; } else if (lblCurrentPage.Text == pageCount.ToString()) { lkbtnNext.Enabled = lkbtnLast.Enabled = false; } rpGuideTeacher.DataSource = items; rpGuideTeacher.DataBind(); return pageCount; } //首页 protected void lkbtnFirst_Click(object sender, EventArgs e) { pageSize = int.Parse(ddlPageSize.SelectedValue); GuideTeacherDataBind(1, pageSize); } //上一页 protected void lkbtnPrev_Click(object sender, EventArgs e) { pageSize = int.Parse(ddlPageSize.SelectedValue); int currentPageIndex = int.Parse(lblCurrentPage.Text) - 1; GuideTeacherDataBind(currentPageIndex, pageSize); } //下一页 protected void lkbtnNext_Click(object sender, EventArgs e) { pageSize = int.Parse(ddlPageSize.SelectedValue); int currentPageIndex = int.Parse(lblCurrentPage.Text) + 1; GuideTeacherDataBind(currentPageIndex, pageSize); } //尾页 protected void lkbtnLast_Click(object sender, EventArgs e) { pageSize = int.Parse(ddlPageSize.SelectedValue); int pageCount = GuideTeacherDataBind(1, pageSize); GuideTeacherDataBind(pageCount, pageSize); } //转跳至XX页 protected void ddlGo_SelectedIndexChanged(object sender, EventArgs e) { pageIndex = int.Parse(ddlGo.SelectedValue); pageSize = int.Parse(ddlPageSize.SelectedValue); GuideTeacherDataBind(pageIndex, pageSize); } //每页显示XX条 protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { pageIndex = int.Parse(ddlGo.SelectedValue); pageSize = int.Parse(ddlPageSize.SelectedValue); GuideTeacherDataBind(pageIndex, pageSize); } }} 小弟初稿~LINQ自定义真分页~求改进求指导~准备改到用户控件中做成一个分页控件~有高手能给下思路否~