三个控件: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();
}
}
}
/// 实现分页定义变量
/// </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();
}
}
}