C#winform的dataGridView控件与datatable实现筛选过滤显示和隐藏的功能,请以代码举例,尽量将这个代码开发逻辑写清楚 ,谢谢C知道
时间: 2025-01-01 11:35:53 浏览: 211
在C# WinForm中,DataGridView控件通常用于显示和编辑数据,而DataTable则是存储和管理数据的重要工具。要实现在Datatable上进行筛选、过滤并动态更新DataGridView的显示,你可以按照以下步骤操作:
首先,创建一个DataTable并填充数据:
```csharp
using System.Data;
// 创建DataTable
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
dataTable.Rows.Add("Alice", 25);
dataTable.Rows.Add("Bob", 30);
dataTable.Rows.Add("Charlie", 35);
// 添加更多行...
```
接下来,设置一个FilteringEnabled属性启用筛选功能,并在需要的时候应用筛选条件:
```csharp
dataGridView1.DataSource = dataTable;
dataGridView1.Filter = "Age > 30"; // 只显示年龄大于30的数据
```
这里我们通过`Filter`属性设置了筛选条件,只有当Age列的值大于30时,数据才会显示。
如果你想要提供动态的筛选功能(比如一个文本框让用户输入筛选条件),可以创建一个事件处理程序来响应用户的输入:
```csharp
private void textBoxFilter_TextChanged(object sender, EventArgs e)
{
dataGridView1.Filter = $"Name LIKE '%{textBoxFilter.Text}%'"; // 根据文本框内容模糊匹配Name列
}
```
在这个例子中,每当text框的内容发生变化,都会触发`textBoxFilter_TextChanged`事件,更新筛选条件以包含用户输入的部分字符串。
最后,为了隐藏不需要的数据,可以在筛选后调用`HideColumn`或`ShowColumns`方法来控制列的可见性:
```csharp
private void FilterButton_Click(object sender, EventArgs e)
{
if (checkboxAgeFilter.Checked) {
dataGridView1.ShowColumn("Age"); // 显示Age列
} else {
dataGridView1.HideColumn("Age"); // 隐藏Age列
}
}
```
这里的`checkboxAgeFilter`是一个开关,如果勾选,则显示Age列,否则隐藏。
阅读全文
相关推荐


















