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

C#如何隐藏DataGridView中列索引0包含指定字符串的整行数据

解决方案

你可以通过以下两种方式实现需求,优先推荐数据源层面过滤的方案:

方案1:数据源层面过滤(推荐)

直接在绑定的DataTable上设置行过滤规则,不需要遍历控件行,性能更稳定,适合任意数据量的场景:

DataSet dataSet = new DataSet();
dataSet.ReadXml(dialog.FileName);
DataTable sourceTable = dataSet.Tables[0];

// 仅展示Visible列值为True的行
sourceTable.DefaultView.RowFilter = "Visible = True";
dataGridView1.DataSource = sourceTable;

如果后续需要取消隐藏,只需将过滤规则清空即可:

sourceTable.DefaultView.RowFilter = "";

方案2:修复原有遍历行写法

如果你需要保留原有遍历逻辑,需要补充空值判断、新行跳过逻辑,同时建议用列名代替固定索引避免列顺序变更导致报错:

DataSet dataSet = new DataSet();
dataSet.ReadXml(dialog.FileName);
dataGridView1.DataSource = dataSet.Tables[0];

// 确保数据绑定完成后再执行行隐藏逻辑
dataGridView1.DataBindingComplete += (sender, e) =>
{
    // 先校验目标列是否存在,避免运行时报错
    if (!dataGridView1.Columns.Contains("Visible")) return;

    foreach (DataGridViewRow dr in dataGridView1.Rows)
    {
        // 跳过控件自带的新增空白行,同时判空避免空引用异常
        if (!dr.IsNewRow 
            && dr.Cells["Visible"].Value != null 
            && dr.Cells["Visible"].Value.ToString() == "False")
        {
            dr.Visible = false;
        }
    }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:04