一个用于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数据绑定方法

    }

posted @ 2010-06-21 16:43  微硬  阅读(1001)  评论(0编辑  收藏  举报