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

点击按钮后按条件删除RadGridView中B列空值行的实现方法

问题说明

GridView包含A、B两列,需要实现B列无值时删除对应整行的功能。目前已经写好了遍历所有行、判断B列空值的逻辑,需要补充对应的行删除代码。
现有待调整的代码:

private void Button1_Click(object sender, EventArgs e)
    {
        foreach (GridViewRowInfo row in DGV1.Rows)
        {
            if (row.Cells[1].Value == null || Convert.ToString(row.Cells[1].Value) == string.Empty)
            {
                MessageBox.Show("Null value");
            }
        }
    }
实现方法

注意:直接在正向遍历行集合的循环里删除行会触发集合索引偏移,导致漏删、运行报错,不能直接把删除代码塞进现有foreach循环里。
有两种稳定的实现方式:

  • 倒序遍历行集合删除
    从最后一行往第一行遍历,删除当前行不会影响还未遍历到的行的索引,逻辑简单性能好:
    private void Button1_Click(object sender, EventArgs e)
    {
        // 从最后一行开始倒序遍历
        for (int i = DGV1.Rows.Count - 1; i >= 0; i--)
        {
            GridViewRowInfo currentRow = DGV1.Rows[i];
            // 判断B列是否为空,用IsNullOrWhiteSpace可以同时识别null、空串、全空格的无效值
            if (currentRow.Cells[1].Value == null || string.IsNullOrWhiteSpace(Convert.ToString(currentRow.Cells[1].Value)))
            {
                DGV1.Rows.Remove(currentRow);
                // 也可以用索引删除写法:DGV1.Rows.RemoveAt(i);
            }
        }
    }
    
  • 先收集待删除行再统一删除
    遍历的时候先把所有符合删除条件的行存到临时列表,遍历完原行集合之后再批量删除,也能避开遍历中修改原集合的问题:
    private void Button1_Click(object sender, EventArgs e)
    {
        List<GridViewRowInfo> waitDeleteRows = new List<GridViewRowInfo>();
        foreach (GridViewRowInfo row in DGV1.Rows)
        {
            if (row.Cells[1].Value == null || string.IsNullOrWhiteSpace(Convert.ToString(row.Cells[1].Value)))
            {
                waitDeleteRows.Add(row);
            }
        }
        // 批量移除所有符合条件的行
        foreach (var row in waitDeleteRows)
        {
            DGV1.Rows.Remove(row);
        }
    }
    

补充提示:如果你的DGV是绑定了数据源(比如DataTable、实体集合)的状态,不要直接操作DGV的Rows集合删行,要去操作对应的数据源执行删除,否则会出现控件和数据源状态不同步的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:06:23