在gridview 的分页当中,
是相当的个抑郁,
有1 2 3 的地方没有向上向下,
有向上向下的地方又没有1 2 3 导航
所以抽了个空自定义了一个,效果给大家看下

当然 没有大动干戈的重写一个gridview 控件
而是写了一个pageManager 类来对gridview 的page进行控制
ok,个人认为注释还凑合
代码如下
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Web;
5
using System.Web.Security;
6
using System.Web.UI;
7
using System.Web.UI.HtmlControls;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using 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
==========================彪悍的分割线============================================*/
27
public 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
using System;2
using System.Data;3
using System.Configuration;4
using System.Web;5
using System.Web.Security;6
using System.Web.UI;7
using System.Web.UI.HtmlControls;8
using System.Web.UI.WebControls;9
using System.Web.UI.WebControls.WebParts;10
using System.Drawing;11

12
/// <summary>13
///Pager 的摘要说明14
/// </summary>15

16

17
/*=========================彪悍的分割线============================================18
* 时间:2008年9月24日1:30:21 19
* 作者:ATPKING20
* 内容:分页管理类21
* 功能描述:实现自定义的GridView 的分页控件22
* 测试人:ATPKING23
* 测试代码:24
XianPGL.aspx 中测试通过25
* 测试结论:能将GridView自定义一个分页26
==========================彪悍的分割线============================================*/27
public class PagerManager28
{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的祖孙控件GridView125
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
使用代码如下
ok,还是比较简单,当然有高手还是重写了gridview 只不过个人认为还是有点杀鸡用牛刀哦。
好了,本人应届毕业生 囧,还请各位看官多多指教

