我沒有使用VB.Net的經驗。因此,您可以閱讀C#代碼。
這個例子建立這樣的:

你的程序有事件是這樣的:
Load += Form1_Load;
nudNumber.ValueChanged+=nudNumber_ValueChanged;
cboPage.SelectedIndexChanged+=cboPage_SelectedIndexChanged;
所有變量這樣做:當
int currentPageIndex = 1;
int pageSize = 20;
int pageNumber = 0;
int fistRow, lastRow;
int rows;
SqlConnection QueryMailRefNo = new SqlConnection("Select * from File_Movement where [email protected]_No Order by fdate desc, ftime desc");
事件的Form_Load ():
void Form1_Load(object sender, EventArgs e)
{
string sql = "select count(*) as MaxNumber from File_Movement";
SqlCommand cmd = new SqlCommand(sql, QueryMailRefNo);
QueryMailRefNo.Open();
rows = Convert.ToInt32(cmd.ExecuteScalar());
pageTotal();
QueryMailRefNo.Close();
}
用於統計所有頁面的函數。
void pageTotal()
{
pageNumber = rows % pageSize != 0 ? rows/pageSize + 1 : rows/pageSize; // Count page if have pageSize in Page
lblTotal.Text = "/" + pageNumber.ToString();
cboPage.Items.Clear();
for (int i = 1; i < pageNumber; i++)
cboPage.Items.Add(i + "");
cboPage.SelectedIndex = 0;
}
接下來,事件變化時行數默認的頁面數據:
private void nudNumber_ValueChanged(object sender, EventArgs e)
{
pageSize = Convert.ToInt32(nudNumber.Value);
pageTotal();
}
最後,當你在總頁面中選擇任一頁面的事件。
void cboPage_SelectedIndexChanged(object sender, EventArgs e)
{
currentPageIndex = Convert.ToInt32(cboPage.Text);
fistRow = pageSize * (currentPageIndex - 1); // First rows
lastRow = pageSize * (currentPageIndex); //Final rows of page selected
string sql = "select Row_number() over(order by fdate) * from File_Movement";
SqlDataAdapter da = new SqlDataAdapter(sql, QueryMailRefNo);
DataSet ds = new DataSet();
da.Fill(ds, fistRow, pageSize, "ITSVT"); //Get data from firstRow and get pageSizeLấy of rows
dataGridView1.DataSource = ds.Tables[0];
}
希望所以幫助你。