一步步打造自己的分页控件--2

上一篇中我将分页的代码写在用户控件里面,仔细一想,发现分页无非是改变当前页码,获取不同的数据

所以点击分页事件都是同一个,因此想到了使用委托,绑定多个类似的事件,对上面的代码进行优化

前台代码

 

View Code
1 <div id="pager">
2        第<asp:Label ID="curPage" runat="server" Text="1"></asp:Label>页&nbsp;&nbsp;
3         <asp:LinkButton ID="lbtfirst" runat="server" onclick="lbtfirst_Click">首页</asp:LinkButton>&nbsp; &nbsp;   
4         <asp:LinkButton ID="lbtPre" runat="server" onclick="lbtPre_Click">上页</asp:LinkButton>&nbsp; &nbsp;  
5         <asp:LinkButton
6             ID="lbtNext" runat="server" onclick="lbtNext_Click">下页</asp:LinkButton>&nbsp; &nbsp;  
7             <asp:LinkButton ID="lblLast"
8                 runat="server" onclick="lblLast_Click">末页</asp:LinkButton>&nbsp; &nbsp;  
9     </div>  

后台分页代码没有具体实现分页,没有设置数据源,数据绑定控件参数

 

View Code
 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 }

调用的时候只需要触发分页事件,从而获取动态改变的当前页码

 

View Code
 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         }

代码继续在下一篇中提供下载,不好意思让各位博友久等,拍砖头的尽管来

 

posted @ 2011-11-26 20:34  流星剑  阅读(1586)  评论(4编辑  收藏  举报