//前台:
<%@ 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自定义数字分页功能
最新推荐文章于 2019-08-06 06:23:07 发布