C#DataGridView實現分頁顯示
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace dgvCategories { public partial class Form1 : Form { int _iPageSize = 0; //每頁顯示行數 int _iTotalRecords = 0; //總記錄數 int _iPageCount = 0; //頁數=總記錄數/每頁顯示行數 int _iPageCurrent = 0; //當前頁號 int _iCurrent = 0; //當前記錄行 DataSet _ds = new DataSet(); DataTable _dtCategories = new DataTable(); public Form1() { InitializeComponent(); } private void InitDataSet() { _iPageSize = 20; //每頁顯示20行 _iTotalRecords = _dtCategories.Rows.Count; //表的總行數 _iPageCount = _iTotalRecords / _iPageSize; //總頁數 if (_iTotalRecords % _iPageSize > 0) //如果不是整除, { _iPageCount++;//不滿20行的也作為一頁來顯示 } _iPageCurrent = 1; //當前第1頁 _iCurrent = 0; //當前第0行 LoadData(); } private void LoadData() { int iBeginPos = 0; //當前頁麵開始記錄行 int iEndPos = 0; //當前頁麵結束記錄行 DataTable dtTemp = _dtCategories.Clone(); //克隆表的結構 if (_iPageCurrent == _iPageCount) //如果當前頁是最後一頁 { iEndPos = _iTotalRecords; } else//當前頁麵結束位置=頁麵大小*當前頁碼 { iEndPos = _iPageSize * _iPageCurrent; } iBeginPos = _iCurrent; //當前記錄行號 txtPageCount.Text = Convert.ToString(_iPageCount); //顯示總頁數 txtCurentPage.Text = Convert.ToString(_iPageCurrent); //顯示當前第一頁 //從元數據表複製數據 for (int i = iBeginPos; i < iEndPos; i++ ) { dtTemp.ImportRow(_dtCategories.Rows[i]); _iCurrent++; } dgvCategories.DataSource = bdsCategories; bdnCategories.BindingSource = bdsCategories; bdsCategories.DataSource = dtTemp; } private void Form1_Load(object sender, EventArgs e) { string strConnectionString = "server=localhost;database=NorthWind;" + "uid=sa;pwd=tianshi520;"; SqlConnection sqlConn = new SqlConnection(strConnectionString); sqlConn.Open(); string strSql = "select * from orders"; SqlDataAdapter sda = new SqlDataAdapter(strSql, sqlConn); sda.Fill(_ds, "Categories"); _dtCategories = _ds.Tables["Categories"]; sqlConn.Close(); InitDataSet(); } private void bdnCategories_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Text == "關閉") { this.Close(); } else if (e.ClickedItem.Text == "下一頁") { _iPageCurrent++;//頁數加1 if (_iPageCurrent > _iPageCount)//如果當前頁碼>最大頁數 { MessageBox.Show("已經是最後一頁,請點擊“上一頁”查看!"); return; } _iCurrent = _iPageSize * (_iPageCurrent - 1);//當前行號 LoadData(); } else if (e.ClickedItem.Text == "上一頁") { _iPageCurrent--; if (_iPageCurrent <= 0) { MessageBox.Show("當前已經是第一頁,請點擊下一頁查看!"); return; } _iCurrent = _iPageSize * (_iPageCurrent - 1); LoadData(); } } } }
最後更新:2017-04-02 00:06:48