gridview 中自定义分页

在gridview 的分页当中,

是相当的个抑郁,

有1 2 3 的地方没有向上向下,

有向上向下的地方又没有1 2 3 导航

所以抽了个空自定义了一个,效果给大家看下

当然  没有大动干戈的重写一个gridview 控件

而是写了一个pageManager 类来对gridview 的page进行控制

ok,个人认为注释还凑合

代码如下

 

  1using System;
  2using System.Data;
  3using System.Configuration;
  4using System.Web;
  5using System.Web.Security;
  6using System.Web.UI;
  7using System.Web.UI.HtmlControls;
  8using System.Web.UI.WebControls;
  9using System.Web.UI.WebControls.WebParts;
 10using System.Drawing;
 11
 12/// <summary>
 13///Pager 的摘要说明
 14/// </summary>

 15
 16
 17/*=========================彪悍的分割线============================================
 18 * 时间:2008年9月24日1:30:21 
 19 * 作者:ATPKING
 20 * 内容:分页管理类
 21 * 功能描述:实现自定义的GridView 的分页控件
 22 * 测试人:ATPKING
 23 * 测试代码:
 24      XianPGL.aspx 中测试通过
 25 * 测试结论:能将GridView自定义一个分页
 26 ==========================彪悍的分割线============================================*/

 27public class PagerManager
 28{
 29    private GridView _gridview;
 30    
 31    public PagerManager()
 32    
 33    }

 34    public PagerManager(GridView gridview)
 35    {
 36        _gridview = gridview;
 37    }

 38    /// <summary>
 39    /// 将gridview 启动自定义分页
 40    /// </summary>

 41    public void doPaging()
 42    {
 43        _gridview.AllowPaging = true;//将gridview 允许分页打开
 44        _gridview.PageIndexChanging += new GridViewPageEventHandler(_gridview_PageIndexChanging);//注册分页事件
 45        _gridview.RowCreated += new GridViewRowEventHandler(_gridview_RowCreated);//注册row绑定事件
 46    }

 47    public void doPaging(GridView g)
 48    {
 49        _gridview = g;
 50        doPaging();
 51    }

 52    /// <summary>
 53    /// 将gridview 启动自定义分页
 54    /// </summary>
 55    /// <param name="page">一页的行数</param>

 56    public void doPaging(int page) 
 57    {
 58        _gridview.PageSize = page;
 59        doPaging();
 60    }

 61    /// <summary>
 62    /// 将gridview 启动自定义分页
 63    ///  </summary>
 64    /// <param name="page">一页的行数</param>
 65    /// <param name="g">对应的Grid</param>

 66    public void doPaging(int page, GridView g)
 67    {
 68        _gridview = g;
 69        _gridview.PageSize = page;
 70
 71        doPaging();
 72    }

 73    void _gridview_RowCreated(object sender, GridViewRowEventArgs e)
 74    {
 75        if (e.Row.RowType == DataControlRowType.Pager)//当生成pager行时候
 76        {
 77            声明“第一页”、“前一页”、“后一页”、“最后页”、“页提示信息”
110
111            TableCell tmp = e.Row.Cells[0];// 读到系统的分页
112            tmp.Controls.Add(Button_IndexFirst);//将几个按钮添加在系统分页后面
113            tmp.Controls.Add(Button_IndexNext);
114            tmp.Controls.Add(Button_IndexPrevious);
115            tmp.Controls.Add(Button_IndexLast);
116            tmp.Controls.Add(label_Index);
117
118
119        }

120    }

121
122    void PageButtonClick(object sender, EventArgs e)
123    {
124        GridView tmpGridView = (GridView)((((((LinkButton)sender).Parent).Parent).Parent).Parent);//寻找到Button的祖孙控件GridView
125        LinkButton clickedButton = ((LinkButton)sender);
126        if (clickedButton.CommandName == "first")//当引发事件的按钮命令为First时
127        {
128            tmpGridView.PageIndex = 0;
129            tmpGridView.DataBind();
130        }

131        else if (clickedButton.CommandName == "next")
132        {
133            if (tmpGridView.PageIndex < tmpGridView.PageCount - 1)
134            {
135                tmpGridView.PageIndex = tmpGridView.PageIndex + 1;
136                tmpGridView.DataBind();
137            }

138        }

139        else if (clickedButton.CommandName == "previous")
140        {
141            if (tmpGridView.PageIndex >= 1)
142            {
143                tmpGridView.PageIndex -= 1;
144                tmpGridView.DataBind();
145            }

146        }

147        else if (clickedButton.CommandName == "last")
148        {
149            tmpGridView.PageIndex = tmpGridView.PageCount - 1;
150            tmpGridView.DataBind();
151        }

152    }

153    void _gridview_PageIndexChanging(object sender, GridViewPageEventArgs e)
154    {
155        _gridview.PageIndex = e.NewPageIndex;
156        _gridview.DataBind();
157    }

158}

159

调用的时候非常方便,就在相应的地方实例化一个对象,之后执行dopaging 就ok

使用代码如下

 

Code

 

 

ok,还是比较简单,当然有高手还是重写了gridview    只不过个人认为还是有点杀鸡用牛刀哦。

好了,本人应届毕业生 囧,还请各位看官多多指教

posted @ 2008-09-24 15:57  Atpking  阅读(757)  评论(1编辑  收藏  举报