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

来源:岁月联盟 编辑:exp 时间:2011-12-01

 

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

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

前台代码

 

 

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> 

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

 

 

 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 }

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

 

 

 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 www.2cto.com

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         }

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

 


作者 流星剑