针对目前手上c/s项目编写的分页控件,可能不适合所有人使用.
运行效果图:

该控件并没有使用VS自带的BindingNavigate、BindingSource控件, 使用控件时只需要传入 每页条数,总条数,当前页面索引即可,数据
源无需与分页控件绑关联.
代码:
public partial class Pager : UserControl
{
public event System.EventHandler PageIndexChanged;
private const int DefaultPageSize = 10;
//总页数
private int mnPageCount = 0;
//最大记录
private int mnMaxRec = 0;
//一页显示多少条
private int mnPageSize = 10;
//当前页面索引
private int mnCurrentPageIndex = 1;
private int recNo;
public Pager()
{
InitializeComponent();
}
#region 公开的属性
/// <summary>
/// 获取总页数
/// </summary>
public int PageCount
{
get
{
int nPageCount = (RecordCount > 0) ? (int)Math.Ceiling((double)RecordCount / (double)PageSize) : 1;
return nPageCount;
}
}
/// <summary>
/// 获取或设置当前页面索引
/// </summary>
public int CurrentPageIndex
{
get
{
if (mnCurrentPageIndex >= PageCount && PageCount > 0)
{
return PageCount;
}
else if (mnCurrentPageIndex < 1)
{
return 1;
}
return mnCurrentPageIndex;
}
set
{
int nPageIndex = value;
if (nPageIndex < 1)
{
nPageIndex = 1;
}
else if (nPageIndex > this.PageCount)
{
nPageIndex = this.PageCount;
}
mnCurrentPageIndex = nPageIndex;
Refresh();
}
}
/// <summary>
/// 获取或设置一页显示多少条数据
/// </summary>
public int PageSize
{
get
{
return mnPageSize;
}
set
{
int nPageSize = Math.Abs(value);
mnPageSize = nPageSize == 0 ? DefaultPageSize : nPageSize;
Refresh();
}
}
/// <summary>
/// 获取或设置总记录数
/// </summary>
public int RecordCount
{
get
{
return mnMaxRec;
}
set
{
mnMaxRec = value;
Refresh();
}
}
#endregion
/// <summary>
/// 应根据当前的CurrentPageIndex和pageCount设定按钮可用
/// </summary>
private void Refresh()
{
if (PageCount > 1)
{
toolFirstPage.Enabled = toolUpPage.Enabled = (CurrentPageIndex > 1);
toolNextPage.Enabled = toolLastPage.Enabled = (CurrentPageIndex < PageCount);
}
else
{
toolFirstPage.Enabled = false;
toolLastPage.Enabled = false;
toolUpPage.Enabled = false;
toolNextPage.Enabled = false;
}
toolCurrentPageIndex.Text = "第 " + CurrentPageIndex.ToString() + " 页";
toollabMaxpage.Text = "共 " + RecordCount.ToString() + " 条记录 , 每页 " + PageSize + " 条";
toolPageCount.Text = "共 " + PageCount.ToString() + " 页";
}
private void Pager_Load(object sender, EventArgs e)
{
Refresh();
}
private void toolFirstPage_Click(object sender, EventArgs e)
{
this.mnCurrentPageIndex = 1;
Refresh();
if (PageIndexChanged != null)//调用事件
{
PageIndexChanged(sender, e);
}
}
private void toolUpPage_Click(object sender, EventArgs e)
{
this.mnCurrentPageIndex = (CurrentPageIndex > 1) ? CurrentPageIndex - 1 : 1;
Refresh();
if (PageIndexChanged != null)//调用事件
{
PageIndexChanged(sender, e);
}
}
private void toolNextPage_Click(object sender, EventArgs e)
{
this.mnCurrentPageIndex = (PageCount > CurrentPageIndex) ? CurrentPageIndex + 1 : PageCount;
Refresh();
if (PageIndexChanged != null)//调用事件
{
PageIndexChanged(sender, e);
}
}
private void toolLastPage_Click(object sender, EventArgs e)
{
this.mnCurrentPageIndex = PageCount;
Refresh();
if (PageIndexChanged != null)//调用事件
{
PageIndexChanged(sender, e);
}
}
private void tooGo_Click(object sender, EventArgs e)
{
try
{
int JumpIndex = int.Parse(toolTextPageIndex.Text);
if (JumpIndex <= PageCount)
{
mnCurrentPageIndex = JumpIndex;
Refresh();
if (PageIndexChanged != null)//调用事件
{
PageIndexChanged(sender, e);
}
}
}
catch
{
}
}
//鼠标移至控件上方鼠标变手形状
private void toolFirstPage_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
}
private void toolFirstPage_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
private void toolUpPage_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
}
private void toolUpPage_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
private void toolNextPage_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
}
private void toolNextPage_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
private void toolLastPage_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
}
private void toolLastPage_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
private void tooGo_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
}
private void tooGo_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
调用:
this.pager1.PageSize = 每页显示数量;
this.pager1.CurrentPageIndex = 当前页;
this.pager1.RecordCount = 总条数;
并在PageIndexChanged事件中重新为控件指定页面索引.
浙公网安备 33010602011771号