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 { /**/ /// /// 申明委托 /// /// /// public delegate int EventPagingHandler(EventPagingArg e); /**/ /// /// 分页控件呈现 /// protected void Page_Load(object sender, EventArgs e) { } public event EventPagingHandler EventPaging; /**/ /// /// 每页显示记录数 /// private int _pageSize = 100; /**/ /// /// 每页显示记录数 /// public int PageSize { get { return _pageSize; } set { _pageSize = value; GetPageCount(); } } private int _nMax = 0; /**/ /// /// 总记录数 /// public int NMax { get { return _nMax; } set { _nMax = value; GetPageCount(); } } private int _pageCount = 0; /**/ /// /// 页数=总记录数/每页显示记录数 /// public int PageCount { get { return _pageCount; } set { _pageCount = value; } } private int _pageCurrent = 0; /**/ /// /// 当前页号 /// public int PageCurrent { get { return _pageCurrent; } set { _pageCurrent = value; } } /// /// 设置页面大小 /// 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; } } /**/ /// /// 翻页控件数据绑定的方法 关键是这步,都是调用这里 /// 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); } /// /// 首页 /// /// /// public void btnFirst_Click(object sender, ImageClickEventArgs e) { PageCurrent = 1; this.Bind(); } //上一页 /// /// /// /// /// public void btnPrev_Click(object sender, ImageClickEventArgs e) { PageCurrent -= 1; if (PageCurrent <= 0) { PageCurrent = 1; } this.Bind(); } /// /// 下一页 /// /// /// public void btnNext_Click(object sender, ImageClickEventArgs e) { this.PageCurrent += 1; if (PageCurrent > PageCount) { PageCurrent = PageCount; } this.Bind(); } /// /// 最后页 /// /// /// public void btnLast_Click(object sender, ImageClickEventArgs e) { PageCurrent = PageCount; this.Bind(); } /// /// 转到新页 /// /// /// 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(); } } } /**/ /// /// 自定义事件数据基类 /// public class EventPagingArg : EventArgs { private int _intPageIndex; public EventPagingArg(int PageIndex) { _intPageIndex = PageIndex; } }