C#实现datagridview分页全部代码
时间: 2023-06-24 18:05:37 浏览: 167
以下是C#实现DataGridView分页的全部代码。请注意,此代码仅提供参考,您需要根据自己的需求进行修改和优化。
```csharp
private void btnSearch_Click(object sender, EventArgs e)
{
//查询数据并绑定到DataGridView
BindData();
}
private void BindData()
{
int pageSize = 10; //每页显示的记录数
int pageIndex = int.Parse(txtPageIndex.Text); //当前页码
//查询总记录数
string countSql = "SELECT COUNT(*) FROM your_table WHERE your_condition";
int totalCount = Convert.ToInt32(ExecuteScalar(countSql));
//计算总页数
int pageCount = (int)Math.Ceiling((double)totalCount / pageSize);
//限制页码范围
if (pageIndex < 1)
{
pageIndex = 1;
}
else if (pageIndex > pageCount)
{
pageIndex = pageCount;
}
//查询当前页的数据
string dataSql = "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY your_order) AS RowNumber, * FROM your_table WHERE your_condition) AS Temp WHERE RowNumber BETWEEN @startIndex AND @endIndex";
int startIndex = (pageIndex - 1) * pageSize + 1;
int endIndex = pageIndex * pageSize;
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@startIndex", startIndex),
new SqlParameter("@endIndex", endIndex)
};
DataTable dt = ExecuteDataTable(dataSql, parameters);
//绑定数据到DataGridView
dataGridView1.DataSource = dt;
//更新分页信息
lblTotalCount.Text = totalCount.ToString();
lblPageCount.Text = pageCount.ToString();
txtPageIndex.Text = pageIndex.ToString();
}
private void btnFirst_Click(object sender, EventArgs e)
{
//跳转到首页
txtPageIndex.Text = "1";
BindData();
}
private void btnPrev_Click(object sender, EventArgs e)
{
//跳转到上一页
int pageIndex = int.Parse(txtPageIndex.Text) - 1;
txtPageIndex.Text = pageIndex.ToString();
BindData();
}
private void btnNext_Click(object sender, EventArgs e)
{
//跳转到下一页
int pageIndex = int.Parse(txtPageIndex.Text) + 1;
txtPageIndex.Text = pageIndex.ToString();
BindData();
}
private void btnLast_Click(object sender, EventArgs e)
{
//跳转到末页
int pageCount = int.Parse(lblPageCount.Text);
txtPageIndex.Text = pageCount.ToString();
BindData();
}
private object ExecuteScalar(string sql)
{
//执行SQL查询并返回结果的第一行第一列
using (SqlConnection conn = new SqlConnection("your_connection_string"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
return cmd.ExecuteScalar();
}
}
}
private DataTable ExecuteDataTable(string sql, SqlParameter[] parameters)
{
//执行SQL查询并返回结果集
using (SqlConnection conn = new SqlConnection("your_connection_string"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (parameters != null)
{
cmd.Parameters.AddRange(parameters);
}
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
```
在上面的代码中,`BindData`方法用于查询数据并绑定到DataGridView控件上。`ExecuteScalar`和`ExecuteDataTable`方法分别用于执行SQL查询并返回结果。
分页操作由四个按钮实现:首页、上一页、下一页和末页。这些按钮的Click事件分别调用`btnFirst_Click`、`btnPrev_Click`、`btnNext_Click`和`btnLast_Click`方法,这些方法只是简单地修改页码并调用`BindData`方法来重新绑定数据。
请注意,上面的示例代码使用了SQL Server数据库和ADO.NET技术。如果您使用的是其他数据库或数据访问技术,需要进行相应的修改。