分页

前台

<%@ 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>
            ]页
            &nbsp;&nbsp;共[
            <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

}

 

posted @ 2017-08-10 11:49  纡ゾ少︶ㄣ  阅读(125)  评论(0编辑  收藏  举报