| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  | #region  版权信息 | 
					
						
							|  |  |  |  | /*---------------------------------------------------------------------* | 
					
						
							|  |  |  |  | // 项目  名称:《Winform分页控件》 | 
					
						
							|  |  |  |  | // 文  件  名: Pager.cs | 
					
						
							|  |  |  |  | // 描      述: 分页控件 | 
					
						
							|  |  |  |  | // 作      者:kwon yan | 
					
						
							|  |  |  |  | *----------------------------------------------------------------------*/ | 
					
						
							|  |  |  |  | #endregion | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.ComponentModel; | 
					
						
							|  |  |  |  | using System.Drawing; | 
					
						
							|  |  |  |  | using System.Data; | 
					
						
							|  |  |  |  | using System.Linq; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | using System.Windows.Forms; | 
					
						
							|  |  |  |  | //using DeiNiu.Utils; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace DeiNiu.Controls.pager | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     /**/ | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     /// 申明委托 | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |     /// <param name="e"></param> | 
					
						
							|  |  |  |  |     /// <returns></returns> | 
					
						
							|  |  |  |  |     public delegate int EventPagingHandler(EventPagingArg e); | 
					
						
							|  |  |  |  |     /**/ | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     /// 分页控件呈现 | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |     public partial class Pager : UserControl | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         public Pager() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             InitializeComponent(); | 
					
						
							|  |  |  |  |             this.bindingNavigator1.LayoutStyle = ToolStripLayoutStyle.HorizontalStackWithOverflow; | 
					
						
							|  |  |  |  |             this.bindingNavigator1.AutoSize = true; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         public event EventPagingHandler EventPaging; | 
					
						
							|  |  |  |  |         /**/ | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 每页显示记录数 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         private int _pageSize = 100;//Utils.WmsConstants.PAGER_SIZE; | 
					
						
							|  |  |  |  |         /**/ | 
					
						
							|  |  |  |  |         /// <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 { | 
					
						
							|  |  |  |  |                // _pageCurrent = _pageCurrent > _pageCount ? _pageCount : _pageCurrent; | 
					
						
							|  |  |  |  |              //   _pageCurrent = _pageCurrent == 0 && _pageCount > 0 ? 1 : _pageCurrent; | 
					
						
							|  |  |  |  |                 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(bool query=true ) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             try | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 NMax = 0; | 
					
						
							|  |  |  |  |                 if (query && 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()); | 
					
						
							|  |  |  |  |                  | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |                 */ | 
					
						
							| 
									
										
										
										
											2023-11-21 19:18:23 +08:00
										 |  |  |  |                 for (int i = 1000; i <= 9000; i += 1000) | 
					
						
							| 
									
										
										
										
											2023-05-23 16:13:17 +08:00
										 |  |  |  |                 { | 
					
						
							|  |  |  |  |                     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); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             catch (Exception er) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                  | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 首页 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="sender"></param> | 
					
						
							|  |  |  |  |         /// <param name="e"></param> | 
					
						
							|  |  |  |  |         private void btnFirst_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             PageCurrent = 1; | 
					
						
							|  |  |  |  |             this.Bind(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //上一页 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         ///  | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="sender"></param> | 
					
						
							|  |  |  |  |         /// <param name="e"></param> | 
					
						
							|  |  |  |  |         private void btnPrev_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             PageCurrent -= 1; | 
					
						
							|  |  |  |  |             if (PageCurrent <= 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 PageCurrent = 1; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             this.Bind(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 下一页 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="sender"></param> | 
					
						
							|  |  |  |  |         /// <param name="e"></param> | 
					
						
							|  |  |  |  |         private void btnNext_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             this.PageCurrent += 1; | 
					
						
							|  |  |  |  |             if (PageCurrent > PageCount) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 PageCurrent = PageCount; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             this.Bind(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 最后页 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="sender"></param> | 
					
						
							|  |  |  |  |         /// <param name="e"></param> | 
					
						
							|  |  |  |  |         private void btnLast_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             PageCurrent = PageCount; | 
					
						
							|  |  |  |  |             this.Bind(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 转到新页 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="sender"></param> | 
					
						
							|  |  |  |  |         /// <param name="e"></param> | 
					
						
							|  |  |  |  |         public void btnGo_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Bind(); | 
					
						
							|  |  |  |  |             }  | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void cmbPagecount_SelectedIndexChanged(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 this.Bind(); | 
					
						
							|  |  |  |  |             }  | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         private void comPagesize_SelectedIndexChanged(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (Int32.TryParse(comPagesize.SelectedItem.ToString(), out _pageSize)) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 GetPageCount(); | 
					
						
							|  |  |  |  |                 this.Bind(); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             | 
					
						
							|  |  |  |  |         | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         private void lblRecordCount_Click(object sender, EventArgs e) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     /**/ | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     /// 自定义事件数据基类 | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |     public class EventPagingArg : EventArgs | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         private int _intPageIndex; | 
					
						
							|  |  |  |  |         public EventPagingArg(int PageIndex) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             _intPageIndex = PageIndex; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |