【问题标题】:Delete rows which has a specific value from DataGridView C#从 DataGridView C# 中删除具有特定值的行
【发布时间】:2014-07-10 11:03:48
【问题描述】:

我有一个 WinForm DataGridView,如下所示,我需要删除列中具有特定值的行

在这种情况下,我使用文本字段输入代码,然后单击“删除”列值下具有 ITM-000001 的所有行。我不知道从哪里开始。

private void deleteClick(object sender, EventArgs e)
{      
    String code = txtCode.Text;
    // CODE HERE       
}

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    不一定比 Matthew 的解决方案更好甚至更简单;只是我有时觉得有用的另一种方法:

        List<DataGridViewRow> RowsToDelete = new List<DataGridViewRow>();
        foreach (DataGridViewRow row in dataGridView1.Rows)
            if ( row.Cells[0].Value != null && 
                 row.Cells[0].Value.ToString() == "TTTT") RowsToDelete.Add(row);
        foreach (DataGridViewRow row in RowsToDelete) dataGridView1.Rows.Remove(row);
        RowsToDelete.Clear();
    

    这样,您可以在实际删除它们之前将列表用作缓冲区或给出命中数。

    我也喜欢他对string.Equals 的使用,并在这里以不同的方式使用它只是为了好玩..

    【讨论】:

    • 感谢@TaW 的努力
    【解决方案2】:

    我已经很久没有用 Windows 窗体做任何事情了(哦,好日子),如果这有点不对劲,请见谅,但你应该能够通过类似...

    for(int v = 0; v < dataGrid1.Rows.Count; v++)
    {
        if(string.Equals(dataGrid1[0, v].Value as string, "ITM-000001"))
        {
            dataGrid1.Rows.RemoveAt(v);
            v--; // this just got messy. But you see my point.
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 2020-07-08
      • 1970-01-01
      相关资源
      最近更新 更多