Demo的介面
從介面可以看到,在設計時需要一個DataGridView、BindingNavigate、BindingSource控制項,分別命名為dgvInfo、bdnInfo、bdsInfo。
在bdnInfo控制項中添加幾個用於選擇頁面的lable和botton,如所示。
設計時:// 1、定義幾個所需的公有成員:
int pageSize = 0; //每頁顯示行數
int nMax = 0; //總記錄數
int pageCount = 0; //頁數=總記錄數/每頁顯示行數
int pageCurrent = 0; //當前頁號
int nCurrent = 0; //目前記錄行
DataSet ds = new DataSet();
DataTable dtInfo = new DataTable();
//2、在表單載入事件中,從資料來源讀取記錄到DataTable中:
string strConn = "SERVER=127.0.0.1;DATABASE=NORTHWIND;UID=SA;PWD=ULTRATEL"; //資料庫連接字串
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string strSql = "SELECT * FROM CUSTOMERS";
SqlDataAdapter sda = new SqlDataAdapter(strSql,conn);
sda.Fill(ds,"ds");
conn.Close();
dtInfo = ds.Tables[0];
InitDataSet();
//3、用當前頁面資料填充DataGridView
private void InitDataSet()
{
pageSize = 20; //設定頁面行數
nMax = dtInfo.Rows.Count;
pageCount=(nMax/pageSize); //計算出總頁數
if ((nMax % pageSize) > 0) pageCount++;
pageCurrent = 1; //當前頁數從1開始
nCurrent = 0; //目前記錄數從0開始
LoadData();
}
private void LoadData()
{
int nStartPos = 0; //當前頁面開始記錄行
int nEndPos = 0; //當前頁面結束記錄行
DataTable dtTemp = dtInfo.Clone(); //複製DataTable結構架構
if (pageCurrent == pageCount)
{
nEndPos = nMax;
}
else
{
nEndPos = pageSize * pageCurrent;
}
nStartPos = nCurrent;
lblPageCount.Text = pageCount.ToString();
txtCurrentPage.Text = Convert.ToString(pageCurrent);
//從中繼資料源複製記錄行
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(dtInfo.Rows[i]);
nCurrent++;
}
bdsInfo.DataSource = dtTemp;
bdnInfo.BindingSource = bdsInfo;
dgvInfo.DataSource = bdsInfo;
}
// 4、菜單響應事件:
private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if (e.ClickedItem.Text == "關閉")
{
this.Close();
}
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();
}
}
url:http://greatverve.cnblogs.com/archive/2011/07/05/DataGridView-pager.html