C#可视化winform datagridview控件分页
时间: 2023-08-27 19:04:59 浏览: 355
在 C# 可视化 WinForm 中,可以使用 DataGridView 控件来显示数据,并且可以实现分页功能。下面是一个简单的实现分页功能的示例代码:
首先,在窗体中添加一个 DataGridView 控件和两个 Button 控件,一个用于上一页,一个用于下一页。然后在窗体的 Load 事件中,初始化 DataGridView 控件并设置数据源:
```
private void Form1_Load(object sender, EventArgs e)
{
// 初始化 DataGridView 控件
dataGridView1.AutoGenerateColumns = true;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false;
dataGridView1.ReadOnly = true;
// 设置数据源
dataGridView1.DataSource = GetData(1, pageSize);
}
```
其中,GetData() 方法用于获取数据源,第一个参数表示当前页码,第二个参数表示每页显示的数据条数。这个方法需要根据具体的业务逻辑来实现。
接下来,实现上一页和下一页的按钮点击事件:
```
private void btnPrev_Click(object sender, EventArgs e)
{
if (currentPage > 1)
{
currentPage--;
dataGridView1.DataSource = GetData(currentPage, pageSize);
}
}
private void btnNext_Click(object sender, EventArgs e)
{
if (currentPage < totalPages)
{
currentPage++;
dataGridView1.DataSource = GetData(currentPage, pageSize);
}
}
```
其中,currentPage 表示当前页码,totalPages 表示总页数。在点击上一页和下一页按钮时,需要判断当前是否到达了第一页或最后一页,如果没有,则更新当前页码并重新设置数据源。
最后,需要根据总数据条数和每页显示的数据条数计算总页数,并在窗体中显示出来:
```
private void DisplayPageInfo()
{
// 计算总页数
int totalCount = GetTotalCount();
totalPages = (int)Math.Ceiling((double)totalCount / pageSize);
// 显示当前页码和总页数
lblPageInfo.Text = string.Format("第 {0} 页,共 {1} 页", currentPage, totalPages);
}
```
其中,GetTotalCount() 方法用于获取总数据条数,需要根据具体的业务逻辑来实现。
完整的代码示例:
```
public partial class Form1 : Form
{
private int pageSize = 10; // 每页显示的数据条数
private int currentPage = 1; // 当前页码
private int totalPages = 0; // 总页数
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 初始化 DataGridView 控件
dataGridView1.AutoGenerateColumns = true;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false;
dataGridView1.ReadOnly = true;
// 设置数据源
dataGridView1.DataSource = GetData(1, pageSize);
// 显示当前页码和总页数
DisplayPageInfo();
}
private void btnPrev_Click(object sender, EventArgs e)
{
if (currentPage > 1)
{
currentPage--;
dataGridView1.DataSource = GetData(currentPage, pageSize);
DisplayPageInfo();
}
}
private void btnNext_Click(object sender, EventArgs e)
{
if (currentPage < totalPages)
{
currentPage++;
dataGridView1.DataSource = GetData(currentPage, pageSize);
DisplayPageInfo();
}
}
private void DisplayPageInfo()
{
// 计算总页数
int totalCount = GetTotalCount();
totalPages = (int)Math.Ceiling((double)totalCount / pageSize);
// 显示当前页码和总页数
lblPageInfo.Text = string.Format("第 {0} 页,共 {1} 页", currentPage, totalPages);
}
private DataTable GetData(int pageNum, int pageSize)
{
// 根据当前页码和每页显示的数据条数获取数据源
// 这里只是一个示例,需要根据具体的业务逻辑来实现
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));
for (int i = 1; i <= pageSize; i++)
{
int id = (pageNum - 1) * pageSize + i;
dt.Rows.Add(id, "Name" + id, 20 + i);
}
return dt;
}
private int GetTotalCount()
{
// 获取总数据条数
// 这里只是一个示例,需要根据具体的业务逻辑来实现
return 100;
}
}
```
阅读全文