//前臺:
<%@ 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
}
GridView自定義數字分頁功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.