zoukankan      html  css  js  c++  java
  • 一步步打造自己的分页控件1

    asp.net数据绑定控件内置了分页功能,但是分页功能有限,样式不好控制,于是想自己开发分页控件

    先晒晒图片效果 不要见笑哦

    先晒晒前台页面分页代码前台用到的是linkbutton然后触发事件改变页码 绑定到下拉列表控件里面需要知道总页数pagedatasource的属性PageCount

    View Code
    <div id="showTfenye">
        当前页:<asp:Label ID="lblPage" runat="server" Text="1"></asp:Label>&nbsp;&nbsp; 总页数:<asp:Label
            ID="lblBackPage" runat="server" Text=""></asp:Label>&nbsp;&nbsp;
        <asp:LinkButton ID="lbtnOne" runat="server" ForeColor="Red" OnClick="lbtnOne_Click">首页</asp:LinkButton>&nbsp;&nbsp;
        <asp:LinkButton ID="lbtnUp" runat="server" ForeColor="Red" OnClick="lbtnUp_Click">上一页</asp:LinkButton>&nbsp;&nbsp;
        <asp:LinkButton ID="lbtnNext" runat="server" ForeColor="Red" OnClick="lbtnNext_Click">下一页</asp:LinkButton>&nbsp;&nbsp;
        <asp:LinkButton ID="lbtnBack" runat="server" ForeColor="Red" OnClick="lbtnBack_Click">末页</asp:LinkButton>&nbsp;&nbsp;
        <asp:DropDownList ID="DropDownList1" runat="server" Width="40px">
        </asp:DropDownList>
        &nbsp;&nbsp;
        <asp:Button ID="Button1" runat="server" BackColor="#99FFCC" BorderColor="#3333FF"
            BorderWidth="2px" OnClick="Button1_Click" Text="Go" />
    </div>

    这个分页我是封装在用户控件里面,用pagedatasource作为中间中间数据源,然后传给数据绑定控件比如,GridView

    重要的利用pageDataSource的 

    ps.DataSource = dt.DefaultView;
            //是否可以分页 
            ps.AllowPaging = true;
            //显示分页的数量 
            ps.PageSize = this.ShowCount;
            //取得当前页的页码 
            ps.CurrentPageIndex = curPage - 1;

     //显示分页数量 
            this.lblBackPage.Text = Convert.ToString(ps.PageCount);

    View Code
      1 using System;
      2 using System.Data;
      3 using System.Web.UI.WebControls;
      4 namespace Pager.controls
      5 {
      6 public partial class pager1 : System.Web.UI.UserControl
      7 {
      8     protected void Page_Load(object sender, EventArgs e)
      9     {
     10         if (!IsPostBack)
     11         {
     12             bind();
     13             showPage();
     14         }
     15     }
     16     #region 定义相关属性   
     17 
     18     private DataBoundControl dataControl;
     19     public DataBoundControl DataControl
     20     {
     21         get { return this.dataControl; }
     22         set { this.dataControl = value; }
     23     }
     24     #region 其他数据源控件   
     25    
     26     //private BaseDataBoundControl dataControl;//数据源控件类型  
     27     /// <summary>
     28     /// 数据绑定控件
     29     /// </summary>
     30     //public BaseDataBoundControl DataControl
     31     //{
     32     //    get { return this.dataControl; }
     33     //    set { this.dataControl = value; }
     34     //}
     35     //DataList控件
     36     //private DataList dataControl;
     37     //public DataList DataControl
     38     //{
     39     //    get { return this.dataControl; }
     40     //    set { this.dataControl = value; }
     41     //}
     42     //repeater控件
     43     //private Repeater dataControl;
     44     //public Repeater DataControl
     45     //{
     46     //    get { return this.dataControl; }
     47     //    set { this.dataControl = value; }
     48     //
     49     #endregion
     50     private int showCount;//每页数量
     51     /// <summary>
     52     /// 每页显示的数量
     53     /// </summary>
     54     public int ShowCount
     55     {
     56         get { return this.showCount; }
     57         set { this.showCount = value; }
     58     }
     59     private DataTable objSource;//数据源
     60     /// <summary>
     61     /// DataTable类型的数据源
     62     /// </summary>
     63     public DataTable Objsource
     64     {
     65         get { return this.objSource; }
     66         set { this.objSource = value; }
     67     }
     68     #endregion
     69 
     70     #region 分页方法
     71     #region  分页
     72     /// <summary>  
     73     /// 分页  
     74     /// </summary>  
     75     protected void bind()
     76     {
     77         //获得当前的页码  
     78         int curPage = Convert.ToInt32(this.lblPage.Text);
     79         //使用PageDataSource类实现数据控件的分页  
     80         PagedDataSource ps = new PagedDataSource();
     81         //获取数据源 
     82         DataTable dt = new DataTable();
     83         dt = this.objSource;
     84         ps.DataSource = dt.DefaultView;
     85         //是否可以分页  
     86         ps.AllowPaging = true;
     87         //显示分页的数量  
     88         ps.PageSize = this.ShowCount;
     89         //取得当前页的页码  
     90         ps.CurrentPageIndex = curPage - 1;
     91         this.lbtnUp.Enabled = true;
     92         this.lbtnNext.Enabled = true;
     93         this.lbtnBack.Enabled = true;
     94         this.lbtnOne.Enabled = true;
     95         if (curPage == 1)
     96         {
     97             //不显示第一页按钮  
     98             this.lbtnOne.Enabled = false;
     99             //不显示上一页按钮  
    100             this.lbtnUp.Enabled = false;
    101         }
    102         if (curPage == ps.PageCount)
    103         {
    104             //不显示下一页按钮  
    105             this.lbtnNext.Enabled = false;
    106             //不显示最后一页按钮  
    107             this.lbtnBack.Enabled = false;
    108         }
    109         //显示分页数量  
    110         this.lblBackPage.Text = Convert.ToString(ps.PageCount);
    111         //绑定到数据源控件  
    112         this.DataControl.DataSource = ps;
    113         this.DataControl.DataBind();
    114     }
    115     #endregion
    116     #region 第一页
    117     /// <summary>  
    118     /// 第一页  
    119     /// </summary>  
    120     /// <param name="sender"></param>  
    121     /// <param name="e"></param>  
    122     protected void lbtnOne_Click(object sender, EventArgs e)
    123     {
    124         this.lblPage.Text = "1";
    125         this.bind();
    126     }
    127     #endregion
    128     #region 上一页
    129     /// <summary>  
    130     /// 上一页  
    131     /// </summary>  
    132     /// <param name="sender"></param>  
    133     /// <param name="e"></param>  
    134     protected void lbtnUp_Click(object sender, EventArgs e)
    135     {
    136         this.lblPage.Text = Convert.ToString(Convert.ToInt32(this.lblPage.Text) - 1);
    137         this.bind();
    138     }
    139     #endregion
    140     #region 下一页
    141     /// <summary>  
    142     /// 下一页  
    143     /// </summary>  
    144     /// <param name="sender"></param>  
    145     /// <param name="e"></param>  
    146     protected void lbtnNext_Click(object sender, EventArgs e)
    147     {
    148         this.lblPage.Text = Convert.ToString(Convert.ToInt32(this.lblPage.Text) + 1);
    149         this.bind();
    150     }
    151     #endregion
    152     #region 最后一页
    153     /// <summary>  
    154     /// 最后一页  
    155     /// </summary>  
    156     /// <param name="sender"></param>  
    157     /// <param name="e"></param>  
    158     protected void lbtnBack_Click(object sender, EventArgs e)
    159     {
    160         this.lblPage.Text = this.lblBackPage.Text;
    161         this.bind();
    162     }
    163     #endregion
    164     //显示所有页数
    165     public void showPage()
    166     {
    167         int count = Convert.ToInt32(lblBackPage.Text);
    168         int[] num = new int[count];
    169         for (int i = 1; i <= count; i++)
    170         {
    171             num[i - 1] = i;
    172             //DropDownList1.DataValueField = i.ToString();//指定下拉列表中的值部分 
    173         }
    174         DropDownList1.DataSource = num;
    175         DropDownList1.DataBind();
    176     }
    177     //跳转到指定页
    178     protected void Button1_Click(object sender, EventArgs e)
    179     {
    180         string page = DropDownList1.SelectedValue;
    181         lblPage.Text = page;//由于显示当前页控件从1开始
    182         bind();
    183     }
    184     #endregion
    185 }
    186 }

    调用时 需要给属性 数据源控件DataControl,每页显示数量ShowCount,数据源Objsource为DataTable类型

    1  protected void Page_Load(object sender, EventArgs e)
    2         {
    3             //gridview的分页
    4          this.pager11.DataControl = this.GridView1;
    5          this.pager11.ShowCount = 20;
    6          sqlHelper s = new sqlHelper();
    7          this.pager11.Objsource =s.getAll().Tables[0];
    8         }

    其中注意一点是 调用时代码不能写在 Ispostback里面

    代码在下一页提供,欢迎期待……

  • 相关阅读:
    Redis 基础、高级特性与性能调优
    CentOS 7安装新版RabbitMQ解决Erlang 19.3版本依赖
    Centos7中docker开启远程访问
    基于Docker+Jenkins+Gitlab搭建持续集成环境
    Gitlab利用Webhook实现Push代码后的jenkins自动构建
    在jenkins中调用maven的变量
    docker中gitlab-runner配置
    搭建docker私有仓库
    ku8eye 安装概览
    配置docker官方源并用yum安装docker
  • 原文地址:https://www.cnblogs.com/Jaylong/p/feny.html
Copyright © 2011-2022 走看看