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

如何在DataGridView的所有列中实现值搜索?附现有代码

实现DataGridView全列搜索的修改方案

修改后的代码

try
{
    var searchValue = textBox1.Text.Trim().Replace("'", "''");
    if (string.IsNullOrEmpty(searchValue))
    {
        ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = string.Empty;
        return;
    }

    var filterConditions = new List<string>();
    foreach (DataGridViewColumn col in dataGridView1.Columns)
    {
        // 跳过不可见列(可选,按需调整)
        if (!col.Visible) continue;
        
        string condition;
        // 根据列数据类型适配搜索逻辑,避免转换异常
        switch (col.ValueType.Name)
        {
            case "String":
                condition = $"{col.Name} LIKE '%{searchValue}%'";
                break;
            case "Int32":
            case "Double":
            case "Decimal":
                // 输入为有效数值时才匹配数值列
                if (double.TryParse(searchValue, out _))
                {
                    condition = $"{col.Name} = {searchValue}";
                }
                else
                {
                    continue;
                }
                break;
            case "DateTime":
                // 输入为有效日期时才匹配日期列
                if (DateTime.TryParse(searchValue, out _))
                {
                    condition = $"CONVERT({col.Name}, System.String) LIKE '%{searchValue}%'";
                }
                else
                {
                    continue;
                }
                break;
            default:
                // 其他类型统一转字符串匹配
                condition = $"CONVERT({col.Name}, System.String) LIKE '%{searchValue}%'";
                break;
        }
        filterConditions.Add(condition);
    }

    // 用OR连接所有列的搜索条件
    ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = string.Join(" OR ", filterConditions);
}
catch (Exception exc)
{
    MessageBox.Show(exc.Message);
}

核心调整说明

  • 遍历所有列:不再固定单一列,循环处理dataGridView1的所有列
  • 空值重置:搜索框为空时清空筛选规则,恢复显示全部数据
  • 分类型适配:针对字符串、数值、日期等不同数据类型做匹配优化,避免类型转换错误
  • 防护处理:保留原代码的Replace("'", "''")操作,避免单引号引发的筛选语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:10:15