三个控件:DataGridView,BindingNavigator,BindingSource
/**/
/// <summary>
/// 实现分页定义变量
/// </summary>
///
private
int
pageSize
=
0
;
private
int
nMax
=
0
;
private
int
pageCount
=
0
;
private
int
pageCurrent
=
0
;
private
int
nCurrent
=
0
;
DataSet dst
=
new
DataSet();
System.Data.DataTable dtInfo
=
new
DataTable();

/**/
/// <summary>
/// 加载数据
/// </summary>
private
void
LoadRoomData()

...
{
ClearDataGridViewData();
string connstr = Connectionstr.ConnectionString;
OleDbConnection oleconn = new OleDbConnection(connstr);
string sqlstr = "Select RoomTypeName As 客房类型 ,RoomArea As [客房面积(M2)]," +
"RatedBed As [额定床数(张)],RatedCount As [额定人数(人)]," +
"RoomPrice As [客房价格(RMB)],RoomTV As 电视," +
"RoomPhone As 电话,[RoomAir-condition] As 空调 ,RoomToilet As 卫生间 From RoomType";//[RoomAir-condition]中括号不能少
try

...{
oleconn.Open();
OleDbDataAdapter oleda = new OleDbDataAdapter(sqlstr, oleconn);
//DataSet ds = new DataSet();
//oleda.Fill(ds);
oleda.Fill(dst);
oleconn.Close();
dtInfo = dst.Tables[0];
if (dst.Tables .Count >0 && dst.Tables[0].Rows.Count > 0)

...{
InitDataSet();
DatagridviewSetColumnWidth();
}
else return;
//dgvRoomType.DataSource = ds.Tables[0];
}
catch (Exception exp)

...{
MessageBox.Show(exp.ToString ());
}
}
private
void
InitDataSet()

...
{
//pageSize = 1;
IniFile inif = new IniFile();
pageSize = int.Parse(inif.IniReadValue("DataGridView", "pagesize"));
nMax = dtInfo.Rows.Count;
pageCount = nMax / pageSize;
if ((nMax % pageSize) > 0)
pageCount++;
pageCurrent = 1;//当前页面数从1开始
nCurrent = 0;
LoadData();
}
private
void
LoadData()

...
{
int nStartPos = 0;
int nEndPos = 0;
System.Data.DataTable dtTemp = dtInfo.Clone();//克隆
if (pageCurrent == pageCount)
nEndPos = nMax;
else
nEndPos = pageSize * pageCurrent;
nStartPos = nCurrent;
bdnCountpage.Text = pageCount.ToString();
bdnCurrentpage.Text =Convert .ToString ( pageCurrent);

//从原数据源复制记录行
for (int i = nStartPos; i < nEndPos; i++)

...{
dtTemp.ImportRow(dtInfo.Rows[i]);
nCurrent++;
}
BdsInfo.DataSource = dtTemp;
BdnInfo.BindingSource = BdsInfo;
dgvRoomType.DataSource = BdsInfo;
}

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();
}
if (e.ClickedItem.Text == "下一页")

...{
pageCurrent++;
if (pageCurrent > pageCount)

...{
MessageBox.Show("已经是最后一页,请点击“上页”查看");
return;
}
else

...{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
}
}

private
void
bdnCurrentpage_KeyPress(
object
sender, KeyPressEventArgs e)

...
{
if (e.KeyChar == 13)

...{
string pattern = @"^d+$";
if (Regex.IsMatch(bdnCurrentpage.Text.Trim(), pattern))

...{
if (int.Parse(bdnCurrentpage.Text) > pageCount || int.Parse(bdnCurrentpage.Text) <= 0)

...{
MessageBox.Show("已经超出显示范围");
return;
}
else

...{
pageCurrent = int.Parse(bdnCurrentpage.Text);
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
}
}
}