c#中分页显示数据
//c#中分页显示数据
public partial class Form1 : Form
{
int pageSize = 0;
int maxRec = 0;
int pageCount = 0;
int currentPage = 0;
int recNo = 0;
DataSet ds = new DataSet();
DataTable dtSource = new DataTable();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/My Documents/Visual Studio 2005/Projects/WindowsApplication1/WindowsApplication1/表.mdb";//连接数据库
OleDbConnection conn = new OleDbConnection(strconn);
conn.Open();
OleDbDataAdapter sda = new OleDbDataAdapter("select * from Area", conn);//这里就随便取一数据了
sda.Fill(ds, "ds");
conn.Close();
dtSource = ds.Tables[0];
getFillDateset();
}
#region 数据处理
///
/// 得到期初数据
///
private void getFillDateset()
{
try
{
//每页显示数
pageSize = 10; //得到最大记录数
maxRec = dtSource.Rows.Count; //共有多少页
pageCount = (maxRec / pageSize); //取余数
if ((maxRec % pageSize) > 0)
{
pageCount++;
}
//默认第一页
currentPage = 1;
recNo = 0;
LoadPage();
}
catch { }
}
///
/// 判断是否数据已经加载 ///
/// ///
private bool CheckFillButton()
{
if (pageSize == 0)
return false;
else
return true;
}
///
/// 取DataTable的数据 ///
///
private void LoadPage()
{
int startRec;
int endRec;
DataTable dtTemp;
dtTemp = dtSource.Clone();
if (currentPage == pageCount)
endRec = maxRec;
else endRec = pageSize * currentPage;
startRec = recNo;
for (int i = startRec; i < endRec; i++)
{
dtTemp.ImportRow(dtSource.Rows[i]);
recNo++;
}
this.dataGridView1.DataSource = dtTemp;
}
private void changepage(int m)
{
switch (m)
{
case 1:
if (currentPage == 1)
{
MessageBox.Show("已经第一页了");
return;
}
currentPage = 1;
recNo = 0;
LoadPage();
break;
case 2:
currentPage++;
if (currentPage > pageCount)
{
currentPage = pageCount;
if (recNo == maxRec)
{
MessageBox.Show("已经最后一页了");
return;
}
else
recNo = pageSize * (currentPage + 1);
}
LoadPage();
break;
case 3:
if (currentPage == pageCount)
recNo = pageSize * (currentPage - 2);
currentPage--;
if (currentPage < 1)
{
MessageBox.Show("已经第一页了");
currentPage = 1;
return;
}
else
recNo = pageSize * (currentPage - 1);
LoadPage();
break;
case 4:
if (!CheckFillButton())
return;
if (recNo == maxRec)
{
MessageBox.Show("已经最后一页了");
return;
}
currentPage = pageCount;
recNo = pageSize * (currentPage - 1);
LoadPage();
break;
}
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
changepage(1);
}
private void button2_Click(object sender, EventArgs e)
{
changepage(2);
}
private void button3_Click(object sender, EventArgs e)
{
changepage(3);
}
private void button4_Click(object sender, EventArgs e)
{
changepage(4);
}
}