C#winform的dataGridView控件与datatable实现筛选过滤显示和隐藏的功能,请以代码举例
时间: 2025-01-01 09:35:58 浏览: 114
在C# Winform中,利用DataGridView控件和DataTable进行数据筛选和过滤通常涉及以下几个步骤:
1. 创建DataTable:
```csharp
DataTable dataTable = new DataTable();
// 添加列
dataTable.Columns.Add("Column1");
dataTable.Columns.Add("Column2");
// 添加行
dataTable.Rows.Add("Value1A", "Value1B");
dataTable.Rows.Add("Value2A", "Value2B");
// ... 更多行
```
2. 绑定DataTable到DataGridView:
```csharp
dataGridView.DataSource = dataTable;
```
3. 实现筛选功能,这里假设你想基于"Column1"进行文本搜索:
```csharp
string searchKeyword = "A"; // 搜索关键词
var filteredRows = dataTable.AsEnumerable()
.Where(row => row.Field<string>("Column1").ToLower().Contains(searchKeyword.ToLower()));
dataGridView.DataSource = filteredRows.CopyToDataTable(); // 把筛选后的结果设为新的DataSource
```
这样,只有包含"A"的行会被显示出来。如果你想要只显示满足条件的行,而隐藏其他行,Winform没有直接的API来隐藏指定行,但你可以选择清空原有数据源然后再填充筛选后的数据:
```csharp
dataGridView.DataSource = null; // 清除当前数据
dataGridView.DataSource = filteredRows.CopyToDataTable(); // 显示筛选后的数据
```
4. 过滤显示/隐藏功能,可以根据需要动态操作数据集,比如使用一个按钮事件来触发过滤过程:
```csharp
private void filterButton_Click(object sender, EventArgs e)
{
if (filterTextBox.Text != "") // 如果输入框内容不为空
{
string filterText = filterTextBox.Text;
// 使用上面的filteredRows代码块进行筛选
dataGridView.DataSource = filteredRows.CopyToDataTable();
}
else // 否则显示所有数据
{
dataGridView.DataSource = dataTable;
}
}
```
这里假设`filterTextBox`是你用于输入搜索关键词的文本框。
阅读全文
相关推荐



















