GridView自定义数字分页功能

来源:互联网 发布:春光灿烂猪八戒 知乎 编辑:程序博客网 时间:2024/06/05 15:07
//前台:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPager.aspx.cs" Inherits="MyPager" %><!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></head><body>    <form id="form1" runat="server">        <div>            <asp:GridView ID="GridView1" runat="server" Width="249px">                <Columns>                <asp:BoundField DataField="name" HeaderText="姓名" />                <asp:BoundField DataField="sex" HeaderText="性别" />                <asp:BoundField DataField="age" HeaderText="年龄" />                <asp:BoundField DataField="memo" HeaderText="备注" />                </Columns>            </asp:GridView>            <asp:Panel ID="Panel1" runat="server" Height="21px" Width="250px">            </asp:Panel>        </div>    </form></body></html>//后台:public partial class MyPager : System.Web.UI.Page{    BStudent bstu = new BStudent();     int pagesize = 10; //页大小    int intepage = 10; //每轮显示10页     protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            ViewState["pageindex"] = 1;            ViewState["Pages"] = 0;            ViewState["Pager"] = 0;            BindGridView();        }        CreatePager();    }    /// <summary>    /// 绑定数据    /// </summary>    private void BindGridView()    {        int PageCount = 0;        DataTable dt = bstu.GetStudents(PageIndex, pagesize, ref PageCount); //返回数据的方法        Pages = int.Parse(System.Math.Round(PageCount * 1.0 / pagesize, 0).ToString());        GridView1.DataSource = dt;        GridView1.DataBind();    }    #region 分页实现    //创建页码    private void CreatePager()    {        if (Pages <= intepage) //当页面不超过一轮时        {            for (int i = 1; i <= Pages; i++)            {                LinkButton lb = new LinkButton();                lb.Text = i.ToString();                lb.ID = "lb" + i.ToString();                lb.ToolTip = "第" + i.ToString() + "页";                lb.Click += new EventHandler(lb_Click);                Panel1.Controls.Add(lb);                Literal li = new Literal();                li.Text = " ";                Panel1.Controls.Add(li);            }        }        else        {            Panel1.Controls.Clear();            if (Pager > 0)  //添加向前翻动            {                LinkButton Prev = new LinkButton();                Prev.Text = "<<";                Prev.ID = "Prev";                Prev.ToolTip = "向上翻一轮";                Prev.Click += new EventHandler(Prev_Click);                Panel1.Controls.Add(Prev);                Literal li = new Literal();                li.Text = " ";                Panel1.Controls.Add(li);            }            PageIndex = Pager * intepage + 1;            for (int i = Pager * intepage + 1; i <= ((Pager + 1) * intepage > Pages ? Pages : (Pager + 1) * intepage); i++)            {                LinkButton lb = new LinkButton();                lb.Text = i.ToString();                lb.ID = "lb" + i.ToString();                lb.ToolTip = "第" + i.ToString() + "页";                lb.Click += new EventHandler(lb_Click);                Panel1.Controls.Add(lb);                Literal li = new Literal();                li.Text = " ";                Panel1.Controls.Add(li);            }            if ((Pager + 1) * intepage < Pages)//添加向后翻动            {                LinkButton Next = new LinkButton();                Next.Text = ">>";                Next.ID = "Next";                Next.ToolTip = "向下翻一轮";                Next.Click += new EventHandler(Next_Click);                Panel1.Controls.Add(Next);            }        }    }    //向下翻一轮    void Next_Click(object sender, EventArgs e)    {        Pager++;        CreatePager();        BindGridView();    }    //向上翻一轮    void Prev_Click(object sender, EventArgs e)    {        Pager--;        CreatePager();        BindGridView();    }    //分页事件    void lb_Click(object sender, EventArgs e)    {        LinkButton lb = (LinkButton)sender;        PageIndex = int.Parse(lb.Text);        BindGridView();        foreach (Control button in Panel1.Controls)        {            if (button.GetType().Name == "LinkButton")            {                if (((LinkButton)button).Text == lb.Text)                {                    ((LinkButton)button).Enabled = false;                }                else                {                    ((LinkButton)button).Enabled = true;                }            }        }    }    #endregion    #region property    public int Pages //总页数    {        get        {            return int.Parse(ViewState["Pages"].ToString());        }        set        {            ViewState["Pages"] = value;        }    }    public int PageIndex//当前页索引    {        get        {            return int.Parse(ViewState["pageindex"].ToString());        }        set        {            ViewState["pageindex"] = value;        }    }    public int Pager //当前显示第几轮    {        get        {            return int.Parse(ViewState["Pager"].ToString());        }        set        {            ViewState["Pager"] = value;        }    }    #endregion}
原创粉丝点击