You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中DataGridView行标题过滤方案(.NET 4.8,禁用RowFilter)

VB.NET .NET Framework 4.8 实现DataGridView行标题过滤(无需RowFilter)

你的现有代码存在几个问题:仅返回第一个匹配行、重复创建DataTable效率低、空搜索直接清空数据源未考虑还原原始数据。以下是两种优化后的实现方案:

方案1:用DataTable.Select方法快速筛选

利用DataTable内置的Select方法可以直接按条件筛选行,无需手动构建表结构,效率更高:

' 建议在类级别声明原始表引用,比如:Private originalTable As DataTable
' 初始化时将你的数据源赋值给originalTable

Dim searchText As String = txtSalesReport.Text.Trim()

If String.IsNullOrEmpty(searchText) Then
    ' 空搜索时还原原始数据
    DataGridView1.DataSource = originalTable
    Exit Sub
End If

' 筛选第一列(行标题)匹配的行,忽略大小写,支持包含匹配
Dim filteredRows() As DataRow = originalTable.Select(
    $"[{originalTable.Columns(0).ColumnName}] LIKE '%{searchText}%'",
    ,
    DataViewRowState.CurrentRows
)

If filteredRows.Length > 0 Then
    ' 复制原始表的列结构
    Dim filteredTable As DataTable = originalTable.Clone()
    ' 将筛选后的行导入新表
    For Each row As DataRow In filteredRows
        filteredTable.ImportRow(row)
    Next
    DataGridView1.DataSource = filteredTable
Else
    ' 无匹配结果时清空数据源
    DataGridView1.DataSource = Nothing
End If

方案2:手动循环筛选(支持自定义匹配逻辑)

如果需要更复杂的匹配规则(比如多条件组合),可以优化手动循环的方式:

' 同样需要提前保存原始表引用:Private originalTable As DataTable

Dim searchText As String = txtSalesReport.Text.Trim()
' 先复制原始表的列结构
Dim filteredTable As DataTable = originalTable.Clone()

If String.IsNullOrEmpty(searchText) Then
    DataGridView1.DataSource = originalTable
    Exit Sub
End If

For Each row As DataRow In originalTable.Rows
    Dim rowHeader As String = row(0).ToString()
    ' 这里用包含匹配,如需精确匹配替换为 rowHeader.Equals(searchText, StringComparison.OrdinalIgnoreCase)
    If rowHeader.IndexOf(searchText, StringComparison.OrdinalIgnoreCase) >= 0 Then
        filteredTable.ImportRow(row)
    End If
Next

DataGridView1.DataSource = If(filteredTable.Rows.Count > 0, filteredTable, Nothing)

关键优化说明

  • 保留原始DataTable引用,空搜索时直接还原,避免数据丢失
  • 用DataTable.Clone()复制列结构,比手动添加列更高效且不易出错
  • 用ImportRow()复制行,保留行的原始状态
  • 支持精确/包含两种匹配模式,可根据需求调整

内容的提问来源于stack exchange,提问作者Pirunthapan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:57:13