296 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			296 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Web;
 | |
| using System.Web.UI;
 | |
| using System.Web.UI.WebControls;
 | |
| 
 | |
| public partial class public_Pager : System.Web.UI.UserControl
 | |
| {
 | |
| 
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 申明委托
 | |
|     /// </summary>
 | |
|     /// <param name="e"></param>
 | |
|     /// <returns></returns>
 | |
|     public delegate int EventPagingHandler(EventPagingArg e);
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 分页控件呈现
 | |
|     /// </summary>
 | |
|     protected void Page_Load(object sender, EventArgs e)
 | |
|     {
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public event EventPagingHandler EventPaging;
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 每页显示记录数
 | |
|     /// </summary>
 | |
|     private int _pageSize = 100;
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 每页显示记录数
 | |
|     /// </summary>
 | |
|     public int PageSize
 | |
|     {
 | |
|         get { return _pageSize; }
 | |
|         set
 | |
|         {
 | |
|             _pageSize = value;
 | |
|             GetPageCount();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private int _nMax = 0;
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 总记录数
 | |
|     /// </summary>
 | |
|     public int NMax
 | |
|     {
 | |
|         get { return _nMax; }
 | |
|         set
 | |
|         {
 | |
|             _nMax = value;
 | |
|             GetPageCount();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private int _pageCount = 0;
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 页数=总记录数/每页显示记录数
 | |
|     /// </summary>
 | |
|     public int PageCount
 | |
|     {
 | |
|         get { return _pageCount; }
 | |
|         set { _pageCount = value; }
 | |
|     }
 | |
| 
 | |
|     private int _pageCurrent = 0;
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 当前页号
 | |
|     /// </summary>
 | |
|     public int PageCurrent
 | |
|     {
 | |
|         get { return _pageCurrent; }
 | |
|         set { _pageCurrent = value; }
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 设置页面大小
 | |
|     /// </summary>
 | |
|     private void GetPageCount()
 | |
|     {
 | |
|         if (this.NMax > 0)
 | |
|         {
 | |
|             this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize)));
 | |
|             // lblPageCount.Text = " / " + PageCount.ToString();
 | |
|             lblcurentpage.Text = PageCurrent.ToString() + " / " + PageCount.ToString();
 | |
|             //lblPageCount1.Text = "每页 "+PageSize .ToString ()+" 条,共 "+PageCount.ToString()+" 页";
 | |
|             //   lblPageCount1.Text = "Page no: " + PageSize.ToString() + ",Total:" + PageCount.ToString() + " pages";
 | |
|             //   lblPageCount1.Text =   PageSize.ToString() + "/" + PageCount.ToString() ;
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             this.PageCount = 0;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**/
 | |
|     /// <summary>
 | |
|     /// 翻页控件数据绑定的方法 关键是这步,都是调用这里
 | |
|     /// </summary>
 | |
|     public void Bind()
 | |
|     {
 | |
|         if (this.EventPaging != null)
 | |
|         {
 | |
|             this.NMax = this.EventPaging(new EventPagingArg(this.PageCurrent));
 | |
|         }
 | |
| 
 | |
|         if (this.PageCurrent > this.PageCount)
 | |
|         {
 | |
|             this.PageCurrent = this.PageCount;
 | |
|         }
 | |
|         if (this.PageCount == 1)
 | |
|         {
 | |
|             this.PageCurrent = 1;
 | |
|         }
 | |
|         lblcurentpage.Text = PageCurrent.ToString() + " / " + PageCount.ToString();
 | |
|         lblRecordCount.Text = "共" + NMax.ToString() + "条";
 | |
|         // lblRecordCount.Text = "Total: " + NMax.ToString() + " records";
 | |
| 
 | |
| 
 | |
|         btnPrev.Enabled = true;
 | |
|         btnFirst.Enabled = true;
 | |
|         btnLast.Enabled = true;
 | |
|         btnNext.Enabled = true;
 | |
| 
 | |
|         if (this.PageCurrent == 1)
 | |
|         {
 | |
|             this.btnPrev.Enabled = false;
 | |
|             this.btnFirst.Enabled = false;
 | |
|         }
 | |
| 
 | |
| 
 | |
|         if (this.PageCurrent == this.PageCount)
 | |
|         {
 | |
|             this.btnLast.Enabled = false;
 | |
|             this.btnNext.Enabled = false;
 | |
|         }
 | |
| 
 | |
|         if (this.NMax == 0)
 | |
|         {
 | |
|             btnNext.Enabled = false;
 | |
|             btnLast.Enabled = false;
 | |
|             btnFirst.Enabled = false;
 | |
|             btnPrev.Enabled = false;
 | |
|         }
 | |
|         cmbPagecount.Items.Clear();
 | |
|         for (int i = 1; i <= PageCount; i++)
 | |
|         {
 | |
|             cmbPagecount.Items.Add(i.ToString());
 | |
|             //if(i== PageCurrent - 1){
 | |
|             //    cmbPagecount.SelectedItem = cmbPagecount.Items[i - 1];
 | |
|             //}
 | |
|         }
 | |
|         this.cmbPagecount.SelectedIndexChanged -= new System.EventHandler(this.cmbPagecount_SelectedIndexChanged);
 | |
|         cmbPagecount.SelectedIndex = PageCurrent - 1;
 | |
|         this.cmbPagecount.SelectedIndexChanged += new System.EventHandler(this.cmbPagecount_SelectedIndexChanged);
 | |
| 
 | |
| 
 | |
|         comPagesize.Items.Clear();
 | |
|         for (int i = 100; i <= 900; i += 100)
 | |
|         {
 | |
|             comPagesize.Items.Add(i.ToString());
 | |
| 
 | |
|         }
 | |
|         /*
 | |
|         for (int i = 50; i <= 500; i+=50)
 | |
|         {
 | |
|             comPagesize.Items.Add(i.ToString());
 | |
|                 
 | |
|         }
 | |
|         */
 | |
|         for (int i = 1000; i <= 5000; i += 1000)
 | |
|         {
 | |
|             comPagesize.Items.Add(i.ToString());
 | |
|         }
 | |
|         this.comPagesize.SelectedIndexChanged -= new System.EventHandler(this.comPagesize_SelectedIndexChanged);
 | |
|         //   comPagesize.SelectedIndex = this._pageSize / 100 -1;
 | |
|         //  comPagesize.SelectedIndex = this._pageSize / 50 - 1  ;
 | |
|         comPagesize.SelectedIndex = _pageSize <= 1000 ? this._pageSize / 100 - 1 : 10 + _pageSize / 1000 - 2;
 | |
|         this.comPagesize.SelectedIndexChanged += new System.EventHandler(this.comPagesize_SelectedIndexChanged);
 | |
| 
 | |
| 
 | |
|     }
 | |
|     /// <summary>
 | |
|     /// 首页
 | |
|     /// </summary>
 | |
|     /// <param name="sender"></param>
 | |
|     /// <param name="e"></param>
 | |
|     public void btnFirst_Click(object sender, ImageClickEventArgs e)
 | |
|     {
 | |
|         PageCurrent = 1;
 | |
|         this.Bind();
 | |
|     }
 | |
|     //上一页
 | |
|     /// <summary>
 | |
|     /// 
 | |
|     /// </summary>
 | |
|     /// <param name="sender"></param>
 | |
|     /// <param name="e"></param>
 | |
|     public void btnPrev_Click(object sender, ImageClickEventArgs e)
 | |
|     {
 | |
|         PageCurrent -= 1;
 | |
|         if (PageCurrent <= 0)
 | |
|         {
 | |
|             PageCurrent = 1;
 | |
|         }
 | |
|         this.Bind();
 | |
|     }
 | |
|     /// <summary>
 | |
|     /// 下一页
 | |
|     /// </summary>
 | |
|     /// <param name="sender"></param>
 | |
|     /// <param name="e"></param>
 | |
|     public void btnNext_Click(object sender, ImageClickEventArgs e)
 | |
|     {
 | |
|         this.PageCurrent += 1;
 | |
|         if (PageCurrent > PageCount)
 | |
|         {
 | |
|             PageCurrent = PageCount;
 | |
|         }
 | |
|         this.Bind();
 | |
|     }
 | |
|     /// <summary>
 | |
|     /// 最后页
 | |
|     /// </summary>
 | |
|     /// <param name="sender"></param>
 | |
|     /// <param name="e"></param>
 | |
|     public void btnLast_Click(object sender, ImageClickEventArgs e)
 | |
|     {
 | |
|         PageCurrent = PageCount;
 | |
|         this.Bind();
 | |
|     }
 | |
|     /// <summary>
 | |
|     /// 转到新页
 | |
|     /// </summary>
 | |
|     /// <param name="sender"></param>
 | |
|     /// <param name="e"></param>
 | |
|     public void btnGo_Click(object sender, ImageClickEventArgs e)
 | |
|     {
 | |
|         if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent))
 | |
|         {
 | |
|             this.Bind();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void cmbPagecount_SelectedIndexChanged(object sender, EventArgs e)
 | |
|     {
 | |
|         if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent))
 | |
|         {
 | |
|             this.Bind();
 | |
|         }
 | |
|     }
 | |
|     public void comPagesize_SelectedIndexChanged(object sender, EventArgs e)
 | |
|     {
 | |
|         if (Int32.TryParse(comPagesize.SelectedItem.ToString(), out _pageSize))
 | |
|         {
 | |
|             GetPageCount();
 | |
|             this.Bind();
 | |
|         }
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|      
 | |
| 
 | |
| 
 | |
|      
 | |
| } /**/
 | |
| /// <summary>
 | |
| /// 自定义事件数据基类
 | |
| /// </summary>
 | |
| public class EventPagingArg : EventArgs
 | |
| {
 | |
|     private int _intPageIndex;
 | |
|     public EventPagingArg(int PageIndex)
 | |
|     {
 | |
|         _intPageIndex = PageIndex;
 | |
|     }
 | |
| } |