一个用于gridview分页代码
一个用于gridview分页代码
一个公共类DataGridPager
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
/// <summary>
/// DataGridPager 的摘要说明
/// </summary>
///
public delegate void DDLChangedHandler(object sender, System.EventArgs e); //定义一个委托事件
public class DataGridPager
{
public DataGridPager()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public event DDLChangedHandler DDLChanged;
//在ItemCreate事件中创建自定义分页的链接按钮,并根据页数控制链接按钮的状态
public void GridView_ItemCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
GridView dataGrid = (GridView)sender;
if (e.Row.RowType == DataControlRowType.Pager)
{
dataGrid.AllowPaging = true;
TableCell tc = e.Row.Cells[0];
tc.HorizontalAlign = HorizontalAlign.Right;
Label lblSpacer = new Label();
lblSpacer.Width = 2;
tc.Controls.AddAt(0, lblSpacer);
DropDownList ddl = new DropDownList();
ddl.AutoPostBack = true;
ddl.Width = 45;
ddl.ID = "ddl";
ddl.Items.Add("");
ddl.Items.Add("10");
ddl.Items.Add("15");
ddl.Items.Add("16");
ddl.Items.Add("17");
ddl.Items.Add("18");
ddl.Items.Add("19");
ddl.Items.Add("20");
ddl.Items.Add("30");
ddl.Items.Add("50");
ddl.Items.Add("100");
ddl.SelectedIndexChanged += new EventHandler(DDLChanged);
ddl.SelectedItem.Text = dataGrid.PageSize.ToString();
tc.Controls.AddAt(0, ddl);
lblSpacer = new Label();
lblSpacer.Width = 2;
tc.Controls.AddAt(0, lblSpacer);
lblSpacer = new Label();
lblSpacer.Text = "每页数目";
tc.Controls.AddAt(0, lblSpacer);
lblSpacer = new Label();
lblSpacer.Width = 10;
tc.Controls.AddAt(0, lblSpacer);
LinkButton lbLast = new LinkButton();
lbLast.Text = "尾页";
lbLast.CommandName = "last";
if (dataGrid.PageIndex == dataGrid.PageCount - 1)
{
lbLast.Enabled = false;
}
else
{
lbLast.Enabled = true;
}
tc.Controls.AddAt(0, lbLast);
lblSpacer = new Label();
lblSpacer.Text = " ";
tc.Controls.AddAt(0, lblSpacer);
LinkButton lbNext = new LinkButton();
lbNext.Text = "下页";
lbNext.CommandName = "next";
if (dataGrid.PageIndex == dataGrid.PageCount - 1)
{
lbNext.Enabled = false;
}
else
{
lbNext.Enabled = true;
}
tc.Controls.AddAt(0, lbNext);
lblSpacer = new Label();
lblSpacer.Text = " ";
tc.Controls.AddAt(0, lblSpacer);
LinkButton lbPrev = new LinkButton();
lbPrev.Text = "上页";
lbPrev.CommandName = "prev";
if (dataGrid.PageIndex == 0)
{
lbPrev.Enabled = false;
}
else
{
lbPrev.Enabled = true;
}
tc.Controls.AddAt(0, lbPrev);
lblSpacer = new Label();
lblSpacer.Text = " ";
tc.Controls.AddAt(0, lblSpacer);
LinkButton lbFirst = new LinkButton();
lbFirst.Text = "首页";
lbFirst.CommandName = "first";
if (dataGrid.PageIndex == 0)
{
lbFirst.Enabled = false;
}
else
{
lbFirst.Enabled = true;
}
tc.Controls.AddAt(0, lbFirst);
lblSpacer = new Label();
lblSpacer.Width = 10;
tc.Controls.AddAt(0, lblSpacer);
lblSpacer = new Label();
lblSpacer.Text = "当前第" + (dataGrid.PageIndex + 1) + "页,共" + dataGrid.PageCount.ToString() + "页";
tc.Controls.AddAt(0, lblSpacer);
e.Row.Controls.AddAt(0, tc);
}
}
//处理链接按钮事件
public void GridView_RowCommand(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
GridView dataGrid = (GridView)source;
string cmd = e.CommandName.ToString();
switch (cmd)
{
case "next":
dataGrid.PageIndex++;
break;
case "prev":
dataGrid.PageIndex--;
break;
case "first":
dataGrid.PageIndex = 0;
break;
case "last":
dataGrid.PageIndex = dataGrid.PageCount - 1;
break;
}
}
}
在将要使用公共类进行分页的页面中加入
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
DataGridPager pager = new DataGridPager();
pager.DDLChanged += new DDLChangedHandler(ddlPageSize_Changed);
pager.GridView_ItemCreated(sender, e);
}
protected void ddlPageSize_Changed(object sender,System.EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
GridView1.PageSize = Int32.Parse(ddl.SelectedItem.Text);
GridView1.PageIndex = 0;
BindData();//gridview数据绑定方法
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
DataGridPager pager = new DataGridPager();
pager.GridView_RowCommand(sender, e);
BindData();//gridview数据绑定方法
}