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
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 只不过个人认为还是有点杀鸡用牛刀哦。
好了,本人应届毕业生 囧,还请各位看官多多指教