GridView自定義數字分頁功能

//前臺:
<%@ 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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章