上一篇中我将分页的代码写在用户控件里面,仔细一想,发现分页无非是改变当前页码,获取不同的数据
所以点击分页事件都是同一个,因此想到了使用委托,绑定多个类似的事件,对上面的代码进行优化
前台代码

1 <div id="pager">
2 第<asp:Label ID="curPage" runat="server" Text="1"></asp:Label>页
3 <asp:LinkButton ID="lbtfirst" runat="server" onclick="lbtfirst_Click">首页</asp:LinkButton>
4 <asp:LinkButton ID="lbtPre" runat="server" onclick="lbtPre_Click">上页</asp:LinkButton>
5 <asp:LinkButton
6 ID="lbtNext" runat="server" onclick="lbtNext_Click">下页</asp:LinkButton>
7 <asp:LinkButton ID="lblLast"
8 runat="server" onclick="lblLast_Click">末页</asp:LinkButton>
9 </div>
2 第<asp:Label ID="curPage" runat="server" Text="1"></asp:Label>页
3 <asp:LinkButton ID="lbtfirst" runat="server" onclick="lbtfirst_Click">首页</asp:LinkButton>
4 <asp:LinkButton ID="lbtPre" runat="server" onclick="lbtPre_Click">上页</asp:LinkButton>
5 <asp:LinkButton
6 ID="lbtNext" runat="server" onclick="lbtNext_Click">下页</asp:LinkButton>
7 <asp:LinkButton ID="lblLast"
8 runat="server" onclick="lblLast_Click">末页</asp:LinkButton>
9 </div>
后台分页代码没有具体实现分页,没有设置数据源,数据绑定控件参数

1 using System;
2
3 namespace Pager.controls
4 {
5 public delegate void pageChangedHandler(object sender, int nPageIndex);
6 public partial class pager3 : System.Web.UI.UserControl
7 {
8 public event pageChangedHandler OnPageChange;
9 protected void Page_Load(object sender, EventArgs e)
10 {
11 if (!IsPostBack)
12 {
13 state();
14 }
15 }
16 #region 属性
17
18 int pageCount = 10;
19 /// <summary>
20 /// 每页数量
21 /// </summary>
22 public int PageCount
23 {
24 get { return pageCount; }
25 set { pageCount = value; }
26 }
27 int pagelist = 1;
28 /// <summary>
29 /// 页数
30 /// </summary>
31 public int Pagelist
32 {
33 get { return pagelist; }
34 set { pagelist = value; }
35 }
36
37 private void state()
38 {
39 if ( this.curPage.Text=="1")
40 {
41 lbtfirst.Enabled = false;
42 lbtPre.Enabled = false;
43 lbtNext.Enabled = true;
44 lblLast.Enabled = true;
45 }
46 if (int.Parse(this.curPage.Text) > 1 && int.Parse(this.curPage.Text) < Pagelist)
47 {
48 lbtfirst.Enabled = true;
49 lbtPre.Enabled = true;
50 lbtNext.Enabled = true;
51 lblLast.Enabled = true;
52 }
53 if (int.Parse(this.curPage.Text) == Pagelist)
54 {
55 lbtfirst.Enabled = true;
56 lbtPre.Enabled = true;
57 lbtNext.Enabled = false;
58 lblLast.Enabled = false;
59 }
60 }
61
62 #endregion
63
64 #region 点击分页事件
65 //第一页
66 protected void lbtfirst_Click(object sender, EventArgs e)
67 {
68 this.curPage.Text = "1";
69 OnPageChange(sender, 1);
70 state();
71 }
72 //上页
73 protected void lbtPre_Click(object sender, EventArgs e)
74 {
75 this.curPage.Text = (int.Parse(this.curPage.Text) - 1).ToString();
76 OnPageChange(sender, int.Parse(this.curPage.Text));
77 state();
78 }
79 //下页
80 protected void lbtNext_Click(object sender, EventArgs e)
81 {
82
83 this.curPage.Text = (int.Parse(this.curPage.Text) + 1).ToString();
84 OnPageChange(sender, int.Parse(this.curPage.Text));
85 state();
86 }
87 //末页
88 protected void lblLast_Click(object sender, EventArgs e)
89 {
90 this.curPage.Text = Pagelist.ToString();
91 OnPageChange(sender, int.Parse(this.curPage.Text));
92 state();
93 }
94 #endregion
95 }
96 }
2
3 namespace Pager.controls
4 {
5 public delegate void pageChangedHandler(object sender, int nPageIndex);
6 public partial class pager3 : System.Web.UI.UserControl
7 {
8 public event pageChangedHandler OnPageChange;
9 protected void Page_Load(object sender, EventArgs e)
10 {
11 if (!IsPostBack)
12 {
13 state();
14 }
15 }
16 #region 属性
17
18 int pageCount = 10;
19 /// <summary>
20 /// 每页数量
21 /// </summary>
22 public int PageCount
23 {
24 get { return pageCount; }
25 set { pageCount = value; }
26 }
27 int pagelist = 1;
28 /// <summary>
29 /// 页数
30 /// </summary>
31 public int Pagelist
32 {
33 get { return pagelist; }
34 set { pagelist = value; }
35 }
36
37 private void state()
38 {
39 if ( this.curPage.Text=="1")
40 {
41 lbtfirst.Enabled = false;
42 lbtPre.Enabled = false;
43 lbtNext.Enabled = true;
44 lblLast.Enabled = true;
45 }
46 if (int.Parse(this.curPage.Text) > 1 && int.Parse(this.curPage.Text) < Pagelist)
47 {
48 lbtfirst.Enabled = true;
49 lbtPre.Enabled = true;
50 lbtNext.Enabled = true;
51 lblLast.Enabled = true;
52 }
53 if (int.Parse(this.curPage.Text) == Pagelist)
54 {
55 lbtfirst.Enabled = true;
56 lbtPre.Enabled = true;
57 lbtNext.Enabled = false;
58 lblLast.Enabled = false;
59 }
60 }
61
62 #endregion
63
64 #region 点击分页事件
65 //第一页
66 protected void lbtfirst_Click(object sender, EventArgs e)
67 {
68 this.curPage.Text = "1";
69 OnPageChange(sender, 1);
70 state();
71 }
72 //上页
73 protected void lbtPre_Click(object sender, EventArgs e)
74 {
75 this.curPage.Text = (int.Parse(this.curPage.Text) - 1).ToString();
76 OnPageChange(sender, int.Parse(this.curPage.Text));
77 state();
78 }
79 //下页
80 protected void lbtNext_Click(object sender, EventArgs e)
81 {
82
83 this.curPage.Text = (int.Parse(this.curPage.Text) + 1).ToString();
84 OnPageChange(sender, int.Parse(this.curPage.Text));
85 state();
86 }
87 //末页
88 protected void lblLast_Click(object sender, EventArgs e)
89 {
90 this.curPage.Text = Pagelist.ToString();
91 OnPageChange(sender, int.Parse(this.curPage.Text));
92 state();
93 }
94 #endregion
95 }
96 }
调用的时候只需要触发分页事件,从而获取动态改变的当前页码

1 protected void Page_Load(object sender, EventArgs e)
2 {
3 showData(1);
4 this.pager31.OnPageChange += new controls.pageChangedHandler(pager31_PageIndexChanged);
5 }
6 void pager31_PageIndexChanged(object sender, int nPageIndex)
7 {
8 showData(nPageIndex);
9 }
10
11 private void showData(int nPageIndex)
12 {
13 pager31.PageCount = 20;
14 pager31.Pagelist = (new sqlHelper().getAllPage()) / pager31.PageCount;
15 this.GridView1.DataSource = new sqlHelper().getList(pager31.PageCount, nPageIndex - 1, "");
16 this.GridView1.DataBind();
17 }
2 {
3 showData(1);
4 this.pager31.OnPageChange += new controls.pageChangedHandler(pager31_PageIndexChanged);
5 }
6 void pager31_PageIndexChanged(object sender, int nPageIndex)
7 {
8 showData(nPageIndex);
9 }
10
11 private void showData(int nPageIndex)
12 {
13 pager31.PageCount = 20;
14 pager31.Pagelist = (new sqlHelper().getAllPage()) / pager31.PageCount;
15 this.GridView1.DataSource = new sqlHelper().getList(pager31.PageCount, nPageIndex - 1, "");
16 this.GridView1.DataBind();
17 }
代码继续在下一篇中提供下载,不好意思让各位博友久等,拍砖头的尽管来