public partial class PagingControl : UserControl
{
private int record = 0;
/// <summary>
/// 总记录数
/// </summary>
public int RecordCount
{
get { return record; }
set
{
record = value;
InitPageInfo();
}
}
private int pageSize = 15;
/// <summary>
/// 每页条数
/// </summary>
public int PageSize
{
get { return pageSize; }
set { pageSize = value; }
}
private int currentPage = 1;
/// <summary>
/// 当前页
/// </summary>
public int CurrentPage
{
get { return currentPage; }
set { currentPage = value; }
}
public int pageNum = 0;
/// <summary>
/// 总页码
/// </summary>
public int PageNum
{
get
{
if (RecordCount == 0)
{
pageNum = 0;
}
else
{
if (PageSize > RecordCount)
{
pageNum = 1;
}
if (RecordCount % PageSize > 0)
{
pageNum = RecordCount / PageSize + 1;
}
else
{
pageNum = RecordCount / PageSize;
}
}
if (pageNum > 0 && pageNum != this.cmbPage.Items.Count)
{
this.cmbPage.Items.Clear();
for (int i = 0; i < pageNum; i++)
{
this.cmbPage.Items.Add(i + 1);
}
this.cmbPage.SelectedIndex = 0;
this.cmbPage.SelectedIndexChanged -= CmbPage_SelectedIndexChanged;
this.cmbPage.SelectedIndexChanged += CmbPage_SelectedIndexChanged;
this.cmbPage.KeyUp -= this.cmbPage_KeyUp;
this.cmbPage.KeyUp += this.cmbPage_KeyUp;
}
return pageNum;
}
}
private void CmbPage_SelectedIndexChanged(object sender, EventArgs e)
{
if (BindSource != null)
{
CurrentPage = this.cmbPage.SelectedIndex + 1;
BindSource(sender, e);
InitPageInfo();
}
}
//定义委托
public delegate void BindHandle(object sender, EventArgs e);
/// <summary>
/// 绑定数据源事件
/// </summary>
public event BindHandle BindSource;
public PagingControl()
{
InitializeComponent();
}
/// <summary>
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnFirst_Click(object sender, EventArgs e)
{
if (RecordCount > 0)
{
if (CurrentPage == 1)
{
//MessageBox.Show("当前已经是首页");
return;
}
else
{
CurrentPage = 1;
if (BindSource != null)
{
BindSource(sender, e);
InitPageInfo();
}
}
}
}
private void btnPrev_Click(object sender, EventArgs e)
{
if (RecordCount > 0)
{
if (CurrentPage == 1)
{
//MessageBox.Show("当前已经是首页");
return;
}
else
{
CurrentPage = CurrentPage - 1;
if (BindSource != null)
{
BindSource(sender, e);
InitPageInfo();
}
}
}
}
private void btnNext_Click(object sender, EventArgs e)
{
if (RecordCount > 0)
{
if (CurrentPage == PageNum)
{
//MessageBox.Show("当前已经是末页");
return;
}
else
{
CurrentPage = CurrentPage + 1;
if (BindSource != null)
{
BindSource(sender, e);
InitPageInfo();
}
}
}
}
private void btnLast_Click(object sender, EventArgs e)
{
if (RecordCount > 0)
{
if (CurrentPage == PageNum)
{
//MessageBox.Show("当前已经是末页");
return;
}
else
{
CurrentPage = PageNum;
if (BindSource != null)
{
BindSource(sender, e);
InitPageInfo();
}
}
}
}
private void InitPageInfo()
{
if (RecordCount == 0 || (RecordCount > 0 && CurrentPage > pageNum))
{
CurrentPage = 1;
}
this.cmbPage.SelectedIndexChanged -= CmbPage_SelectedIndexChanged;
this.cmbPage.KeyUp -= this.cmbPage_KeyUp;
if (this.cmbPage.Items.Count >= currentPage)
{
this.cmbPage.SelectedIndex = currentPage - 1;
}
this.cmbPage.SelectedIndexChanged += CmbPage_SelectedIndexChanged;
this.cmbPage.KeyUp += this.cmbPage_KeyUp;
lblInfo.Text = string.Format("共 {0} 条记录 共 {1} 页 当前第 {2} 页", RecordCount, PageNum, CurrentPage);
}
private void PagerControl_Load(object sender, EventArgs e)
{
if (BindSource != null)
{
BindSource(sender, e);
InitPageInfo();
}
}
private void cmbPage_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
int page;
int.TryParse(this.cmbPage.Text, out page);
if (page > PageNum)
{
page = pageNum;
this.cmbPage.Text = PageNum.ToString();
}
else if (page == 0)
{
page = 1;
this.cmbPage.Text = "1";
}
if (BindSource != null)
{
CurrentPage = page;
BindSource(sender, e);
InitPageInfo();
}
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容