分页
前台
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form id="form1" runat="server"> <table style="width: 100%; text-align: center; background-color: navy;"> <tr style="color: white;"> <td>Ids</td> <td>名称</td> <td>油耗</td> <td>马力</td> <td>排量</td> <td>价格</td> </tr> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <tr style="background-color: white;"> <td><%#Eval("Ids") %></td> <td><%#Eval("Name") %></td> <td><%#Eval("Oil") %></td> <td><%#Eval("Powers") %></td> <td><%#Eval("Exhaust") %></td> <td><%#Eval("Price") %></td> </tr> </ItemTemplate> </asp:Repeater> </table> <div style="width: 100%; text-align: center; line-height: 30px;"> 当前第[ <asp:Label ID="lab_NowPageNumber" runat="server" Text="1"></asp:Label> ]页 共[ <asp:Label ID="lab_MaxPageNumber" runat="server" Text="1"></asp:Label> ]页<br /> <asp:Button ID="btn_First" runat="server" Text="首页" /> <asp:Button ID="btn_Prev" runat="server" Text="上一页" /> <asp:Button ID="btn_Next" runat="server" Text="下一页" /> <asp:Button ID="btn_Last" runat="server" Text="尾页" /> <asp:DropDownList ID="dr_drop" AutoPostBack="true" runat="server"></asp:DropDownList> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="跳转" /> </div> </form> </body> </html>
右键代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { int PageCount = 5;//全局变量 默认每页显示5条数据 protected void Page_Load(object sender, EventArgs e) { btn_Last.Click += btn_Last_Click;//尾页 btn_Next.Click += btn_Next_Click;//下一页 btn_Prev.Click += btn_Prev_Click;//上一页 btn_First.Click += btn_First_Click;//首页 Button1.Click += Button1_Click;//跳转 //下拉菜单点第几页显示当页的数据 dr_drop.SelectedIndexChanged += dr_drop_SelectedIndexChanged; #region 网页第一次加载 if (!IsPostBack) { Repeater1.DataSource = new CarData().Select(1, PageCount);//第一页显示5条数据 Repeater1.DataBind();//绑定数据库 lab_MaxPageNumber.Text = getMaxNumber().ToString();//最大页数 btn_First.Enabled = false;//首页按钮不能用 btn_Prev.Enabled = false;//上一页不能用 //下拉菜单绑定页数 for (int i = 1; i <= Convert.ToInt32(lab_MaxPageNumber.Text); i++) { dr_drop.Items.Add(new ListItem(i.ToString(), i.ToString())); } } #endregion } void Button1_Click(object sender, EventArgs e) { int a = Convert.ToInt32(TextBox1.Text); PageDataBind(a); } #region 下拉菜单点第几页显示第几页数据 void dr_drop_SelectedIndexChanged(object sender, EventArgs e) { int a = Convert.ToInt32(dr_drop.SelectedValue); PageDataBind(a);//不刷新页面属性加AutopostBack=“true” } #endregion #region 获得最大页数 public int getMaxNumber() { int end = 1;//一条数据都没有显示第一页 #region(数据总条数/每页显示条数 5)取上限 int allCount = new CarData().SelectAll().Count;//数据总条数 decimal a = Convert.ToDecimal(allCount) / PageCount;//数据总条数/每页显示条数 数据总条数(allCount) 和每页显示条数( PageCount)都是int类型数据不准确要用decimal类型 只要有一个转换成decimal就行 end = Convert.ToInt32(Math.Ceiling(a));//取a的上限 a是decima类型装换成int类型 #endregion return end; } #endregion #region 首页 void btn_First_Click(object sender, EventArgs e) { int a = 1; PageDataBind(a); btn_First.Enabled = false; btn_Prev.Enabled = false; btn_Next.Enabled = true; btn_Last.Enabled = true; } #endregion #region 上一页 void btn_Prev_Click(object sender, EventArgs e) { int a = Convert.ToInt32(lab_NowPageNumber.Text) - 1; //当前页数大于0的时候能看 if (a > 0) { PageDataBind(a); } if (a == 1)//当前页数等于1 { btn_First.Enabled = false;//首页按钮不可用 btn_Prev.Enabled = false;//上一页不可用 } btn_Next.Enabled = true;//下一页可用 btn_Last.Enabled = true;//尾页可用 } #endregion #region 下一页 void btn_Next_Click(object sender, EventArgs e) { //获取当前页(lab_NowPageNumber.Text) 然后+1变成用户看的页数 int a = Convert.ToInt32(lab_NowPageNumber.Text) + 1; //当前页数小于等于最大页数能看 if (a <= Convert.ToInt32(lab_MaxPageNumber.Text)) { PageDataBind(a); } btn_First.Enabled = true; btn_Prev.Enabled = true; if (a == Convert.ToInt32(lab_MaxPageNumber.Text))//当前页数等于最大页数 { btn_Next.Enabled = false;//下一页不可用 btn_Last.Enabled = false;//尾页不可用 } } #endregion #region 尾页 void btn_Last_Click(object sender, EventArgs e) { int a = Convert.ToInt32(lab_MaxPageNumber.Text); PageDataBind(a); btn_Next.Enabled = false; btn_Last.Enabled = false; btn_First.Enabled = true; btn_Prev.Enabled = true; } #endregion public void PageDataBind(int a) { Repeater1.DataSource = new CarData().Select(a, PageCount); Repeater1.DataBind(); lab_NowPageNumber.Text = a.ToString();//显示下一页 } }
UsersData
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; /// <summary> /// CarData 的摘要说明 /// </summary> public class CarData { SqlConnection conn = null; SqlCommand cmd = null; public CarData() { conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123"); cmd = conn.CreateCommand(); } public List<Car> SelectAll() { List<Car> clist = new List<Car>(); cmd.CommandText = "select *from car"; conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Car c = new Car(); c.Ids = Convert.ToInt32(dr["Ids"]); c.Name = dr["Name"].ToString(); c.Oil = Convert.ToDecimal(dr["Oil"]); c.Powers = Convert.ToDecimal(dr["Powers"]); c.Exhaust = Convert.ToDecimal(dr["Exhaust"]); c.Price = Convert.ToDecimal(dr["Price"]); clist.Add(c); } conn.Close(); return clist; } #region 分页查询数据 public List<Car> Select(int NowNumber, int Count)//NowNumber当前要看的页数 Count当前页数要显示的数据 { List<Car> clist = new List<Car>(); cmd.CommandText = "select top " + Count + " *from car where ids not in(select top " + ((NowNumber - 1) * Count) + " ids from car)"; conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Car c = new Car(); c.Ids = Convert.ToInt32(dr["Ids"]); c.Name = dr["Name"].ToString(); c.Oil = Convert.ToDecimal(dr["Oil"]); c.Powers = Convert.ToDecimal(dr["Powers"]); c.Exhaust = Convert.ToDecimal(dr["Exhaust"]); c.Price = Convert.ToDecimal(dr["Price"]); clist.Add(c); } conn.Close(); return clist; } #endregion }