正巧我坐过类似的一个测试,可以帮助你下
首先你要了解bindingSource 和 bindingNavigator 控件。
这里我说的是不利用第三方的分页控件。
配置如下
m_cardDataSet.Tables[0]在文中表示为初次查询出来的所有结果信息
给你提供我写的两个函数
int pageSize = 50;//每页显示的行数
int nMax = 0;//总记录数
int pageCount = 0;//页数
int pageCurrent = 0;//当前页号
int nCurrent = 0;//当前行号
//初始化分页信息-根据传递的table表信息
public void InitDataTable(DataTable p_dataTable)
{
nMax = p_dataTable.Rows.Count;
pageCount = (nMax / pageSize);
if (nMax % pageSize > 0)
{
pageCount++;
}
pageCurrent = 1;
nCurrent = 0;
LoadData(p_dataTable);
}
//加载分页信息到页面中
public void LoadData(DataTable p_dataTable)
{
int nStartPos = 0;
int nEndPos = 0;
DataTable deTemp = new DataTable();
deTemp = p_dataTable.Clone();
if (pageCurrent == pageCount)
{
nEndPos = nMax;
}
else
{
nEndPos = pageSize * pageCurrent;
}
nStartPos = nCurrent;
pageCountNumber.Text = "共" + pageCount.ToString() + "页";
currentPage.Text = "第" + Convert.ToString(pageCurrent) + "页";
if (p_dataTable.Rows.Count > 0)
{
for (int i = nStartPos; i < nEndPos; i++)
{
deTemp.ImportRow(p_dataTable.Rows[i]);
nCurrent++;
}
}
bdsInfo.DataSource = deTemp;
bdnInfo.BindingSource = bdsInfo;
carDataDgv.DataSource = bdsInfo;
}
//bindingNavigator 绑定的函数
private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if (e.ClickedItem.Text == "上一页")
{
pageCurrent--;
if (pageCurrent <= 0)
{
MessageBox.Show("已经是第一页,请点击下一页!");
return;
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData(m_cardDataSet.Tables[0]);
}
if (e.ClickedItem.Text == "下一页")
{
pageCurrent++;
if (pageCurrent > pageCount)
{
MessageBox.Show("已经是最后一页,请点击上一页!");
return;
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData(m_cardDataSet.Tables[0]);
}
if (e.ClickedItem.Text == "首页")
{
pageCurrent=1;
nCurrent = pageSize * (pageCurrent - 1);
LoadData(m_cardDataSet.Tables[0]);
}
if (e.ClickedItem.Text == "尾页")
{
pageCurrent = pageCount;
if (pageCurrent > 0)
{
nCurrent = pageSize * (pageCurrent - 1);
}
else
{
nCurrent = 0;
}
LoadData(m_cardDataSet.Tables[0]);
}
}