1. 程式人生 > >DataGridView分頁功能的實現

DataGridView分頁功能的實現

  1 // 1、定義幾個所需的公有成員:  2   3 int pageSize =0;     //每頁顯示行數  4 int nMax =0;         //總記錄數  5 int pageCount =0;    //頁數=總記錄數/每頁顯示行數  6 int pageCurrent =0;   //當前頁號  7 int nCurrent =0;      //當前記錄行  8       DataSet ds =new DataSet();
  9       DataTable dtInfo =new DataTable();
 10  11 //2、在窗體載入事件中,從資料來源讀取記錄到DataTable中: 12  13
 string strConn ="SERVER=127.0.0.1;DATABASE=NORTHWIND;UID=SA;PWD=ULTRATEL";   //資料庫連線字串 14       SqlConnection conn =new SqlConnection(strConn);
 15       conn.Open();
 16 string strSql ="SELECT * FROM CUSTOMERS";
 17       SqlDataAdapter sda =new SqlDataAdapter(strSql,conn);
 18       sda.Fill(ds,"ds");
 19
       conn.Close();
 20       dtInfo = ds.Tables[0];
 21       InitDataSet();
 22  23 //3、用當前頁面資料填充DataGridView 24  25 privatevoid InitDataSet()
 26       {
 27           pageSize =20;      //設定頁面行數 28           nMax = dtInfo.Rows.Count;
 29           pageCount=(nMax/pageSize);    //計算出總頁數 30 if ((nMax % pageSize) 
>0) pageCount++;
 31           pageCurrent =1;    //當前頁數從1開始 32           nCurrent =0;       //當前記錄數從0開始 33           LoadData();
 34        }
 35  36 privatevoid LoadData()
 37       {
 38 int nStartPos =0;   //當前頁面開始記錄行 39 int nEndPos =0;     //當前頁面結束記錄行 40           DataTable dtTemp = dtInfo.Clone();   //克隆DataTable結構框架 41  42 if (pageCurrent == pageCount)
 43           {
 44               nEndPos = nMax;
 45           }
 46 else 47           {
 48                nEndPos = pageSize * pageCurrent;
 49           }
 50  51           nStartPos = nCurrent;
 52           lblPageCount.Text = pageCount.ToString();
 53           txtCurrentPage.Text = Convert.ToString(pageCurrent);
 54  55  56 //從元資料來源複製記錄行 57 for (int i = nStartPos; i < nEndPos; i++)
 58           {
 59               dtTemp.ImportRow(dtInfo.Rows[i]);
 60               nCurrent++;
 61           }
 62           bdsInfo.DataSource = dtTemp;
 63           bdnInfo.BindingSource = bdsInfo;
 64           dgvInfo.DataSource = bdsInfo;
 65      }
 66  67 //   4、選單響應事件: 68  69 privatevoid bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
 70     {
 71 if (e.ClickedItem.Text =="關閉")
 72           {
 73 this.Close();
 74           }
 75 if (e.ClickedItem.Text =="上一頁")
 76           {
 77               pageCurrent--;
 78 if (pageCurrent <=0)
 79               {
 80                  MessageBox.Show("已經是第一頁,請點選“下一頁”檢視!");
 81 return;
 82               }
 83 else 84               {
 85                  nCurrent = pageSize * (pageCurrent -1);
 86               }
 87               LoadData();
 88            }
 89 if (e.ClickedItem.Text =="下一頁")
 90           {
 91               pageCurrent++;
 92 if (pageCurrent > pageCount)
 93               {
 94                   MessageBox.Show("已經是最後一頁,請點選“上一頁”檢視!");
 95 return;
 96                }
 97 else 98               { 
 99                   nCurrent=pageSize*(pageCurrent-1);
100               }
101               LoadData();
102            }
103      }