我没有使用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];
}
希望所以帮助你。